From 493942396dce48bb3e30cd978c210e81e6ea1bfc Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Mon, 5 Jun 2023 21:33:02 +0300 Subject: [PATCH 1/5] dev color --- source/singlog.d | 28 +++++++++++++++++++--------- tests/test.d | 16 ++++++++++++---- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/source/singlog.d b/source/singlog.d index 0202885..d4667a2 100644 --- a/source/singlog.d +++ b/source/singlog.d @@ -100,6 +100,16 @@ version(Windows) { ]; } + string[] color = [ + "\u001b[2;30m[DEBUG]:\u001b[0;30m %s\u001b[0;0m", + "\u001b[1;34m[ALERT]:\u001b[0;34m %s\u001b[0;0m", + "\u001b[1;35m[CRITICAL]:\u001b[0;35m %s\u001b[0;0m", + "\u001b[1;31m[ERROR]:\u001b[0;31m %s\u001b[0;0m", + "\u001b[1;33m[WARNING]:\u001b[0;33m %s\u001b[0;0m", + "\u001b[1;36m[NOTICE]:\u001b[0;36m %s\u001b[0;0m", + "\u001b[1;32m[INFO]:\u001b[0;32m %s\u001b[0;0m", + ]; + public enum { SYSLOG = 1, STDOUT = 2, @@ -109,13 +119,13 @@ version(Windows) { int msgOutput = STDOUT; int msgLevel = INFORMATION; - void writeLog(string message, string type, int msgLevel) { + void writeLog(string message, int msgLevel) { if (this.msgLevel > msgLevel) return; if (this.msgOutput & 1) syslog(sysLevel[msgLevel], message.toStringz()); if (this.msgOutput & 6) - message = format("%s [%s]: %s", Clock.currTime().format("%Y.%m.%d %H:%M:%S"), type, message); + message = Clock.currTime().format("%Y.%m.%d %H:%M:%S ") ~ color[msgLevel].format(message); if (this.msgOutput & 2) writeln(message); if (this.msgOutput & 4) @@ -175,13 +185,13 @@ public: Log file(string path) { this.path = path; return this.log; } Log level(int msgLevel) { this.msgLevel = msgLevel; return this.log; } - void alert(T)(T message) { writeLog(message.to!string, "ALERT", ALERT); } - void critical(T)(T message) { writeLog(message.to!string, "CRITICAL", CRITICAL); } - void error(T)(T message) { writeLog(message.to!string, "ERROR", ERROR); } - void warning(T)(T message) { writeLog(message.to!string, "WARNING", WARNING); } - void notice(T)(T message) { writeLog(message.to!string, "NOTICE", NOTICE); } - void information(T)(T message) { writeLog(message.to!string, "INFORMATION", INFORMATION); } - void debugging(T)(T message) { writeLog(message.to!string, "DEBUGGING", DEBUGGING); } + void alert(T)(T message) { writeLog(message.to!string, ALERT); } + void critical(T)(T message) { writeLog(message.to!string, CRITICAL); } + void error(T)(T message) { writeLog(message.to!string, ERROR); } + void warning(T)(T message) { writeLog(message.to!string, WARNING); } + void notice(T)(T message) { writeLog(message.to!string, NOTICE); } + void information(T)(T message) { writeLog(message.to!string, INFORMATION); } + void debugging(T)(T message) { writeLog(message.to!string, DEBUGGING); } alias a = alert; alias c = critical; diff --git a/tests/test.d b/tests/test.d index d272174..fd6b052 100644 --- a/tests/test.d +++ b/tests/test.d @@ -6,8 +6,16 @@ void main(string[] argv) { .level(log.DEBUGGING) // logging level .file("./test.log"); // the path to the log file - log.e("This is an error message"); - log.error("And this is also an error message"); - log.w("This is a warning message"); - log.i("This is an information message"); + // log.e("This is an error message"); + // log.error("And this is also an error message"); + // log.w("This is a warning message"); + // log.i("This is an information message"); + + log.i("information"); + log.n("notice"); + log.w("warning"); + log.e("error"); + log.c("critical"); + log.a("alert"); + log.d("debug"); } From 43302ab0ea1f9a3dc4c11b51cd8fba29e5e020cc Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Tue, 6 Jun 2023 00:17:56 +0300 Subject: [PATCH 2/5] linux version devel --- source/singlog.d | 152 +++++++++++++++++++++++++++-------------------- tests/test.d | 22 +++---- 2 files changed, 95 insertions(+), 79 deletions(-) diff --git a/source/singlog.d b/source/singlog.d index d4667a2..4fbb8e1 100644 --- a/source/singlog.d +++ b/source/singlog.d @@ -19,7 +19,9 @@ alias log = Log.msg; --- // Setting the name of the logged program - log.name("My program"); + log.program("My program"); + // Setting the status of color text output + log.color(true); // Setting the error output level log.level(log.DEBUGGING); log.level(log.ALERT); @@ -46,24 +48,18 @@ alias log = Log.msg; +/ class Log { private: - static Log log; - string path; - string nameProgram = "singlog"; - bool writeToFile = true; + static Log _log; + string _path; + string _name = "singlog"; + bool _writeToFile = true; + bool _ccolor = false; this() {} version(Windows) { - public enum { - DEBUGGING = 0, - ALERT = 1, - CRITICAL = 1, - ERROR = 1, - WARNING = 2, - NOTICE = 3, - INFORMATION = 3, - } - WORD[] sysLevel = [ + int[] _sysLevel = [0, 1, 1, 1, 2, 3, 4]; + + WORD[] _sysLevelOS = [ EVENTLOG_SUCCESS, EVENTLOG_ERROR_TYPE, EVENTLOG_WARNING_TYPE, @@ -80,6 +76,38 @@ version(Windows) { DeregisterEventSource(handleEventLog); } } else version(Posix) { + int[] _sysLevel = [0, 1, 2, 3, 4, 5, 6]; + + int[] _sysLevelOS = [ + LOG_DEBUG, + LOG_ALERT, + LOG_CRIT, + LOG_ERR, + LOG_WARNING, + LOG_NOTICE, + LOG_INFO + ]; + + string[] _color = [ + "\x1b[1;32m%s\x1b[0;32m %s\x1b[0;0m", // green + "\x1b[1;34m%s\x1b[0;34m %s\x1b[0;0m", // blue + "\x1b[1;35m%s\x1b[0;35m %s\x1b[0;0m", // magenta + "\x1b[1;31m%s\x1b[0;31m %s\x1b[0;0m", // red + "\x1b[1;33m%s\x1b[0;33m %s\x1b[0;0m", // yellow + "\x1b[1;36m%s\x1b[0;36m %s\x1b[0;0m", // cyan + "\x1b[1;97m%s\x1b[0;97m %s\x1b[0;0m", // white + ]; + + void writestdout(string time, string message, int level) { + writeln("%s %s".format(time, + this._ccolor ? + this._color[level].format(this._type[level], message) : + "%s %s".format(this._type[level], message) + ) + ); + } +} + public enum { DEBUGGING = 0, ALERT = 1, @@ -89,25 +117,15 @@ version(Windows) { NOTICE = 5, INFORMATION = 6 } - int[] sysLevel = [ - LOG_DEBUG, - LOG_ALERT, - LOG_CRIT, - LOG_ERR, - LOG_WARNING, - LOG_NOTICE, - LOG_INFO - ]; -} - string[] color = [ - "\u001b[2;30m[DEBUG]:\u001b[0;30m %s\u001b[0;0m", - "\u001b[1;34m[ALERT]:\u001b[0;34m %s\u001b[0;0m", - "\u001b[1;35m[CRITICAL]:\u001b[0;35m %s\u001b[0;0m", - "\u001b[1;31m[ERROR]:\u001b[0;31m %s\u001b[0;0m", - "\u001b[1;33m[WARNING]:\u001b[0;33m %s\u001b[0;0m", - "\u001b[1;36m[NOTICE]:\u001b[0;36m %s\u001b[0;0m", - "\u001b[1;32m[INFO]:\u001b[0;32m %s\u001b[0;0m", + string[] _type = [ + "[DEBUG]:", + "[ALERT]:", + "[CRITICAL]:", + "[ERROR]:", + "[WARNING]:", + "[NOTICE]:", + "[INFO]:" ]; public enum { @@ -116,48 +134,49 @@ version(Windows) { FILE = 4 } - int msgOutput = STDOUT; - int msgLevel = INFORMATION; + int _output = STDOUT; + int _level = INFORMATION; - void writeLog(string message, int msgLevel) { - if (this.msgLevel > msgLevel) + void writeLog(string message, int level) { + string time; + if (this._level > level) return; - if (this.msgOutput & 1) - syslog(sysLevel[msgLevel], message.toStringz()); - if (this.msgOutput & 6) - message = Clock.currTime().format("%Y.%m.%d %H:%M:%S ") ~ color[msgLevel].format(message); - if (this.msgOutput & 2) - writeln(message); - if (this.msgOutput & 4) - writeFile(message); + if (this._output & 1) + syslog(_sysLevelOS[_sysLevel[level]], message.toStringz()); + if (this._output & 6) + time = Clock.currTime().format("%Y.%m.%d %H:%M:%S"); + if (this._output & 2) + writestdout(time, message, level); + if (this._output & 4) + writeFile(time, message, level); } - void writeFile(string message) { - if (!this.writeToFile) + void writeFile(string time, string message, int level) { + if (!this._writeToFile) return; - if (!this.path.exists) { - this.writeToFile = false; - this.warning("The log file does not exist: " ~ this.path); + if (!this._path.exists) { + this._writeToFile = false; + this.warning("The log file does not exist: " ~ this._path); } File file; try { - file = File(this.path, "a+"); - this.writeToFile = true; + file = File(this._path, "a+"); + this._writeToFile = true; } catch (Exception e) { - this.writeToFile = false; - this.error("Unable to open the log file " ~ this.path); + this._writeToFile = false; + this.error("Unable to open the log file " ~ this._path); this.information(e); return; } try { - file.writeln(message); + file.writeln("%s %s %s".format(time, this._type[level], message)); } catch (Exception e) { - this.writeToFile = false; - this.error("Unable to write to the log file " ~ this.path); + this._writeToFile = false; + this.error("Unable to write to the log file " ~ this._path); this.information(e); return; } @@ -165,8 +184,8 @@ version(Windows) { try { file.close(); } catch (Exception e) { - this.writeToFile = false; - this.error("Unable to close the log file " ~ this.path); + this._writeToFile = false; + this.error("Unable to close the log file " ~ this._path); this.information(e); return; } @@ -174,16 +193,17 @@ version(Windows) { public: @property static Log msg() { - if (this.log is null) - this.log = new Log; + if (this._log is null) + this._log = new Log; - return this.log; + return this._log; } - Log output(int msgOutput) { this.msgOutput = msgOutput; return this.log; } - Log name(string nameProgram) { this.nameProgram = nameProgram; return this.log; } - Log file(string path) { this.path = path; return this.log; } - Log level(int msgLevel) { this.msgLevel = msgLevel; return this.log; } + Log output(int outs) { this._output = outs; return this._log; } + Log program(string name) { this._name = name; return this._log; } + Log file(string path) { this._path = path; return this._log; } + Log level(int lvl) { this._level = lvl; return this._log; } + Log color(bool condition) { this._ccolor = condition; return this._log; } void alert(T)(T message) { writeLog(message.to!string, ALERT); } void critical(T)(T message) { writeLog(message.to!string, CRITICAL); } diff --git a/tests/test.d b/tests/test.d index fd6b052..d3c46aa 100644 --- a/tests/test.d +++ b/tests/test.d @@ -2,20 +2,16 @@ import singlog; void main(string[] argv) { log.output(log.SYSLOG | log.STDOUT | log.FILE) // write to syslog, standard output stream and file - .name(argv[0]) // program name as an identifier (for Windows OS) + .program(argv[0]) // program name as an identifier (for Windows OS) .level(log.DEBUGGING) // logging level + .color(true) // color text output .file("./test.log"); // the path to the log file - // log.e("This is an error message"); - // log.error("And this is also an error message"); - // log.w("This is a warning message"); - // log.i("This is an information message"); - - log.i("information"); - log.n("notice"); - log.w("warning"); - log.e("error"); - log.c("critical"); - log.a("alert"); - log.d("debug"); + log.i("This is an information message"); + log.n("This is a notice message"); + log.w("This is a warning message"); + log.e("This is an error message"); + log.c("This is a critical message"); + log.a("This is an alert message"); + log.d("This is a debug message"); } From a1bcdf5b0b5797c61d87530380dbbfa0a9e6c12f Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Tue, 6 Jun 2023 00:54:21 +0300 Subject: [PATCH 3/5] compact format ccolor --- source/singlog.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/singlog.d b/source/singlog.d index 4fbb8e1..1812870 100644 --- a/source/singlog.d +++ b/source/singlog.d @@ -99,10 +99,10 @@ version(Windows) { ]; void writestdout(string time, string message, int level) { - writeln("%s %s".format(time, - this._ccolor ? - this._color[level].format(this._type[level], message) : - "%s %s".format(this._type[level], message) + writeln( + "%s %s".format( + time, + (this._ccolor ? this._color[level] : "%s %s").format(this._type[level], message) ) ); } From b20b8fb55b96e69a3bf082cdd851c6cb98e4266b Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Wed, 7 Jun 2023 02:12:20 +0300 Subject: [PATCH 4/5] windows support --- CHANGELOG.md | 10 +++++ README.md | 26 ++++++++---- source/singlog.d | 101 +++++++++++++++++++++++++++++++-------------- tests/cmd.png | Bin 0 -> 26096 bytes tests/output.png | Bin 22363 -> 0 bytes tests/terminal.png | Bin 0 -> 52284 bytes 6 files changed, 100 insertions(+), 37 deletions(-) create mode 100644 tests/cmd.png delete mode 100644 tests/output.png create mode 100644 tests/terminal.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 90e1f38..5a6fa25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [v0.4.0](https://git.zhirov.kz/dlang/singlog/compare/v0.3.2...v0.4.0) (2023.06.07) + +### New + +- Color output of messages to the terminal and console + +### Bug fixes + +- In Windows, unicode messages are output without distortion to the system log and console (thanks [Adam D. Ruppe](https://arsdnet.net/)) + ## [v0.3.2](https://git.zhirov.kz/dlang/singlog/compare/v0.3.1...v0.3.2) (2023.06.01) - Printing information about the type of the logged message to the standard output stream and file diff --git a/README.md b/README.md index 039b392..ea34a40 100644 --- a/README.md +++ b/README.md @@ -16,25 +16,37 @@ import singlog; void main(string[] argv) { log.output(log.SYSLOG | log.STDOUT | log.FILE) // write to syslog, standard output stream and file - .name(argv[0]) // program name as an identifier (for Windows OS) + .program(argv[0]) // program name as an identifier (for Windows OS) .level(log.DEBUGGING) // logging level + .color(true) // color text output .file("./test.log"); // the path to the log file - log.e("This is an error message"); - log.error("And this is also an error message"); - log.w("This is a warning message"); log.i("This is an information message"); + log.n("This is a notice message"); + log.w("This is a warning message"); + log.e("This is an error message"); + log.c("This is a critical message"); + log.a("This is an alert message"); + log.d("This is a debug message"); } ``` -![output](tests/output.png) +![output](tests/terminal.png) + +![output](tests/cmd.png) ## Examples Setting the name of the logged program (it matters for Windows OS): ```d -log.name("My program"); +log.program("My program"); +``` + +Color output setting (`false` by default): + +```d +log.color(true); ``` Setting the error output level: @@ -77,4 +89,4 @@ log.d("Debugging message") => log.debugging("Debugging message"); ## DUB -Add a dependency on `"singlog": "~>0.3.2"`. +Add a dependency on `"singlog": "~>0.4.0"`. diff --git a/source/singlog.d b/source/singlog.d index 1812870..ace5dd1 100644 --- a/source/singlog.d +++ b/source/singlog.d @@ -2,7 +2,7 @@ module singlog; version(Windows) import core.sys.windows.windows; -else +else version(Posix) import core.sys.posix.syslog; import std.string; @@ -57,28 +57,67 @@ private: this() {} version(Windows) { - int[] _sysLevel = [0, 1, 1, 1, 2, 3, 4]; + int[] _sysPriority = [0, 1, 1, 1, 2, 3, 3]; - WORD[] _sysLevelOS = [ + WORD[] _sysPriorityOS = [ EVENTLOG_SUCCESS, EVENTLOG_ERROR_TYPE, EVENTLOG_WARNING_TYPE, EVENTLOG_INFORMATION_TYPE ]; - void syslog(WORD priority, LPCSTR message) { - HANDLE handleEventLog = RegisterEventSourceA(NULL, this.nameProgram.toStringz()); + void writesyslog(string message, WORD priority) { + import std.utf: toUTF16z; + auto wMessage = message.toUTF16z(); + HANDLE handleEventLog = RegisterEventSourceA(NULL, this._name.toStringz()); if (handleEventLog == NULL) return; - ReportEventA(handleEventLog, priority, 0, 0, NULL, 1, 0, &message, NULL); + ReportEventW(handleEventLog, priority, 0, 0, NULL, 1, 0, &wMessage, NULL); DeregisterEventSource(handleEventLog); } -} else version(Posix) { - int[] _sysLevel = [0, 1, 2, 3, 4, 5, 6]; - int[] _sysLevelOS = [ + WORD[] _color = [ + FOREGROUND_GREEN, + FOREGROUND_BLUE, + FOREGROUND_RED | FOREGROUND_BLUE, + FOREGROUND_RED, + FOREGROUND_RED | FOREGROUND_GREEN, + FOREGROUND_BLUE | FOREGROUND_GREEN, + FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN + ]; + + void colorTextOutput(string time, wstring message, int priority) { + HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_SCREEN_BUFFER_INFO defaultConsole; + GetConsoleScreenBufferInfo(handle, &defaultConsole); + + writef("%s ", time); + SetConsoleTextAttribute(handle, this._color[priority] | FOREGROUND_INTENSITY); + write(this._type[priority]); + SetConsoleTextAttribute(handle, this._color[priority]); + WriteConsoleW(handle, message.ptr, cast(DWORD)message.length, NULL, NULL); + SetConsoleTextAttribute(handle, defaultConsole.wAttributes); + } + + void defaultTextOutput(string time, wstring message, int priority) { + HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); + writef("%s %s", time, this._type[priority]); + WriteConsoleW(handle, message.ptr, cast(DWORD)message.length, NULL, NULL); + } + + void writestdout(string time, string message, int priority) { + wstring wMessage = " %s\n".format(message).to!wstring; + this._ccolor ? + colorTextOutput(time, wMessage, priority) : + defaultTextOutput(time, wMessage, priority); + } + +} else version(Posix) { + int[] _sysPriority = [0, 1, 2, 3, 4, 5, 6]; + + int[] _sysPriorityOS = [ LOG_DEBUG, LOG_ALERT, LOG_CRIT, @@ -98,14 +137,16 @@ version(Windows) { "\x1b[1;97m%s\x1b[0;97m %s\x1b[0;0m", // white ]; - void writestdout(string time, string message, int level) { - writeln( - "%s %s".format( + void writestdout(string time, string message, int priority) { + writefln("%s %s", time, - (this._ccolor ? this._color[level] : "%s %s").format(this._type[level], message) - ) + (this._ccolor ? this._color[priority] : "%s %s").format(this._type[priority], message) ); } + + void writesyslog(string message, int priority) { + syslog(priority, message.toStringz()); + } } public enum { @@ -135,23 +176,23 @@ version(Windows) { } int _output = STDOUT; - int _level = INFORMATION; + int _priority = INFORMATION; - void writeLog(string message, int level) { + void writelog(string message, int priority) { string time; - if (this._level > level) + if (this._priority > priority) return; if (this._output & 1) - syslog(_sysLevelOS[_sysLevel[level]], message.toStringz()); + writesyslog(message, _sysPriorityOS[_sysPriority[priority]]); if (this._output & 6) time = Clock.currTime().format("%Y.%m.%d %H:%M:%S"); if (this._output & 2) - writestdout(time, message, level); + writestdout(time, message, priority); if (this._output & 4) - writeFile(time, message, level); + writefile(time, message, priority); } - void writeFile(string time, string message, int level) { + void writefile(string time, string message, int priority) { if (!this._writeToFile) return; @@ -173,7 +214,7 @@ version(Windows) { } try { - file.writeln("%s %s %s".format(time, this._type[level], message)); + file.writefln("%s %s %s", time, this._type[priority], message); } catch (Exception e) { this._writeToFile = false; this.error("Unable to write to the log file " ~ this._path); @@ -202,16 +243,16 @@ public: Log output(int outs) { this._output = outs; return this._log; } Log program(string name) { this._name = name; return this._log; } Log file(string path) { this._path = path; return this._log; } - Log level(int lvl) { this._level = lvl; return this._log; } + Log level(int priority) { this._priority = priority; return this._log; } Log color(bool condition) { this._ccolor = condition; return this._log; } - void alert(T)(T message) { writeLog(message.to!string, ALERT); } - void critical(T)(T message) { writeLog(message.to!string, CRITICAL); } - void error(T)(T message) { writeLog(message.to!string, ERROR); } - void warning(T)(T message) { writeLog(message.to!string, WARNING); } - void notice(T)(T message) { writeLog(message.to!string, NOTICE); } - void information(T)(T message) { writeLog(message.to!string, INFORMATION); } - void debugging(T)(T message) { writeLog(message.to!string, DEBUGGING); } + void alert(T)(T message) { writelog(message.to!string, ALERT); } + void critical(T)(T message) { writelog(message.to!string, CRITICAL); } + void error(T)(T message) { writelog(message.to!string, ERROR); } + void warning(T)(T message) { writelog(message.to!string, WARNING); } + void notice(T)(T message) { writelog(message.to!string, NOTICE); } + void information(T)(T message) { writelog(message.to!string, INFORMATION); } + void debugging(T)(T message) { writelog(message.to!string, DEBUGGING); } alias a = alert; alias c = critical; diff --git a/tests/cmd.png b/tests/cmd.png new file mode 100644 index 0000000000000000000000000000000000000000..d15e7e6456f3e0134ef9e172c67e5ce1e0e57ab2 GIT binary patch literal 26096 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 literal 0 HcmV?d00001 From f9b47185495a69cfb27ae4b20cbbb19389da217f Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Wed, 7 Jun 2023 10:02:47 +0300 Subject: [PATCH 5/5] fix name program in Windows --- CHANGELOG.md | 2 ++ README.md | 2 +- dub.json | 2 +- source/singlog.d | 20 ++++++++++---------- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a6fa25..01a0229 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## [v0.4.0](https://git.zhirov.kz/dlang/singlog/compare/v0.3.2...v0.4.0) (2023.06.07) +- Part of the code has been changed/rewritten + ### New - Color output of messages to the terminal and console diff --git a/README.md b/README.md index ea34a40..0a36762 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Setting the name of the logged program (it matters for Windows OS): log.program("My program"); ``` -Color output setting (`false` by default): +Setting the status of color text output (`false` by default): ```d log.color(true); diff --git a/dub.json b/dub.json index 97549a7..1ab2258 100644 --- a/dub.json +++ b/dub.json @@ -18,7 +18,7 @@ "name": "test", "targetType": "executable", "targetPath": "bin", - "targetName": "app", + "targetName": "test", "importPaths": ["source","tests"], "sourcePaths": ["tests"] } diff --git a/source/singlog.d b/source/singlog.d index ace5dd1..5caa979 100644 --- a/source/singlog.d +++ b/source/singlog.d @@ -50,7 +50,7 @@ class Log { private: static Log _log; string _path; - string _name = "singlog"; + wstring _name = "singlog"; bool _writeToFile = true; bool _ccolor = false; @@ -69,7 +69,7 @@ version(Windows) { void writesyslog(string message, WORD priority) { import std.utf: toUTF16z; auto wMessage = message.toUTF16z(); - HANDLE handleEventLog = RegisterEventSourceA(NULL, this._name.toStringz()); + HANDLE handleEventLog = RegisterEventSourceW(NULL, this._name.ptr); if (handleEventLog == NULL) return; @@ -79,13 +79,13 @@ version(Windows) { } WORD[] _color = [ - FOREGROUND_GREEN, - FOREGROUND_BLUE, - FOREGROUND_RED | FOREGROUND_BLUE, - FOREGROUND_RED, - FOREGROUND_RED | FOREGROUND_GREEN, - FOREGROUND_BLUE | FOREGROUND_GREEN, - FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN + FOREGROUND_GREEN, // green + FOREGROUND_BLUE, // blue + FOREGROUND_RED | FOREGROUND_BLUE, // magenta + FOREGROUND_RED, // red + FOREGROUND_RED | FOREGROUND_GREEN, // yellow + FOREGROUND_BLUE | FOREGROUND_GREEN, // cyan + FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN // white ]; void colorTextOutput(string time, wstring message, int priority) { @@ -241,7 +241,7 @@ public: } Log output(int outs) { this._output = outs; return this._log; } - Log program(string name) { this._name = name; return this._log; } + Log program(string name) { this._name = name.to!wstring; return this._log; } Log file(string path) { this._path = path; return this._log; } Log level(int priority) { this._priority = priority; return this._log; } Log color(bool condition) { this._ccolor = condition; return this._log; }