From dbe7671cf2d560f5667461d98ce499d975c52932 Mon Sep 17 00:00:00 2001 From: Donny Viszneki Date: Wed, 13 Aug 2014 16:24:47 -0700 Subject: [PATCH] synchronized dlangui.core.logger.Logger; also refactored it a little bit --- src/dlangui/core/logger.d | 122 +++++++++++++------------ src/dlangui/platforms/sdl/sdlapp.d | 6 +- src/dlangui/platforms/windows/winapp.d | 4 +- src/dlangui/platforms/x11/x11app.d | 2 +- 4 files changed, 68 insertions(+), 66 deletions(-) diff --git a/src/dlangui/core/logger.d b/src/dlangui/core/logger.d index 9cd91ea1..465ee95b 100644 --- a/src/dlangui/core/logger.d +++ b/src/dlangui/core/logger.d @@ -39,71 +39,73 @@ enum LogLevel : int { Trace } -__gshared LogLevel logLevel = LogLevel.Info; -__gshared std.stdio.File logFile; - -void setLogLevel(LogLevel level) { - logLevel = level; -} - long currentTimeMillis() { return std.datetime.Clock.currStdTime / 10000; } -void setStdoutLogger() { - logFile = stdout; -} +synchronized class Log { + static { + private LogLevel logLevel = LogLevel.Info; + private std.stdio.File logFile; + + void setStdoutLogger() { + logFile = stdout; + } -void setStderrLogger() { - logFile = stderr; -} + void setStderrLogger() { + logFile = stderr; + } -void setFileLogger(File file) { - logFile = file; -} + void setFileLogger(File file) { + logFile = file; + } -class Log { - static string logLevelName(LogLevel level) { - switch (level) { - case LogLevel.Fatal: return "F"; - case LogLevel.Error: return "E"; - case LogLevel.Warn: return "W"; - case LogLevel.Info: return "I"; - case LogLevel.Debug: return "D"; - case LogLevel.Trace: return "V"; - default: return "?"; - } - } - static void log(S...)(LogLevel level, S args) { - if (logLevel >= level && logFile.isOpen) { - SysTime ts = Clock.currTime(); - logFile.writef("%04d-%02d-%02d %02d:%02d:%02d.%03d %s ", ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second, ts.fracSec.msecs, logLevelName(level)); - logFile.writeln(args); - logFile.flush(); - } - } - static void v(S...)(S args) { - if (logLevel >= LogLevel.Trace && logFile.isOpen) - log(LogLevel.Trace, args); - } - static void d(S...)(S args) { - if (logLevel >= LogLevel.Debug && logFile.isOpen) - log(LogLevel.Debug, args); - } - static void i(S...)(S args) { - if (logLevel >= LogLevel.Info && logFile.isOpen) - log(LogLevel.Info, args); - } - static void w(S...)(S args) { - if (logLevel >= LogLevel.Warn && logFile.isOpen) - log(LogLevel.Warn, args); - } - static void e(S...)(S args) { - if (logLevel >= LogLevel.Error && logFile.isOpen) - log(LogLevel.Error, args); - } - static void f(S...)(S args) { - if (logLevel >= LogLevel.Fatal && logFile.isOpen) - log(LogLevel.Fatal, args); - } + void setLogLevel(LogLevel level) { + logLevel = level; + } + + string logLevelName(LogLevel level) { + switch (level) { + case LogLevel.Fatal: return "F"; + case LogLevel.Error: return "E"; + case LogLevel.Warn: return "W"; + case LogLevel.Info: return "I"; + case LogLevel.Debug: return "D"; + case LogLevel.Trace: return "V"; + default: return "?"; + } + } + void log(S...)(LogLevel level, S args) { + if (logLevel >= level && logFile.isOpen) { + SysTime ts = Clock.currTime(); + logFile.writef("%04d-%02d-%02d %02d:%02d:%02d.%03d %s ", ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second, ts.fracSec.msecs, logLevelName(level)); + logFile.writeln(args); + logFile.flush(); + } + } + void v(S...)(S args) { + if (logLevel >= LogLevel.Trace && logFile.isOpen) + log(LogLevel.Trace, args); + } + void d(S...)(S args) { + if (logLevel >= LogLevel.Debug && logFile.isOpen) + log(LogLevel.Debug, args); + } + void i(S...)(S args) { + if (logLevel >= LogLevel.Info && logFile.isOpen) + log(LogLevel.Info, args); + } + void w(S...)(S args) { + if (logLevel >= LogLevel.Warn && logFile.isOpen) + log(LogLevel.Warn, args); + } + void e(S...)(S args) { + if (logLevel >= LogLevel.Error && logFile.isOpen) + log(LogLevel.Error, args); + } + void f(S...)(S args) { + if (logLevel >= LogLevel.Fatal && logFile.isOpen) + log(LogLevel.Fatal, args); + } + } } diff --git a/src/dlangui/platforms/sdl/sdlapp.d b/src/dlangui/platforms/sdl/sdlapp.d index 729e13a0..1c8fe90e 100644 --- a/src/dlangui/platforms/sdl/sdlapp.d +++ b/src/dlangui/platforms/sdl/sdlapp.d @@ -984,7 +984,7 @@ version(USE_SDL) { int myWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow) { setFileLogger(std.stdio.File("ui.log", "w")); - setLogLevel(LogLevel.Trace); + Log.setLogLevel(LogLevel.Trace); Log.d("myWinMain()"); string basePath = exePath(); Log.i("Current executable: ", exePath()); @@ -1006,8 +1006,8 @@ version(USE_SDL) { int main(string[] args) { - setStderrLogger(); - setLogLevel(LogLevel.Trace); + Log.setStderrLogger(); + Log.setLogLevel(LogLevel.Warn); FreeTypeFontManager ft = new FreeTypeFontManager(); diff --git a/src/dlangui/platforms/windows/winapp.d b/src/dlangui/platforms/windows/winapp.d index 46e33eb6..42c931e0 100644 --- a/src/dlangui/platforms/windows/winapp.d +++ b/src/dlangui/platforms/windows/winapp.d @@ -721,9 +721,9 @@ int myWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int { setFileLogger(std.stdio.File("ui.log", "w")); debug { - setLogLevel(LogLevel.Trace); + Log.setLogLevel(LogLevel.Trace); } else { - setLogLevel(LogLevel.Info); + Log.setLogLevel(LogLevel.Info); } Log.d("myWinMain()"); string basePath = exePath(); diff --git a/src/dlangui/platforms/x11/x11app.d b/src/dlangui/platforms/x11/x11app.d index 8946d80b..996f0910 100644 --- a/src/dlangui/platforms/x11/x11app.d +++ b/src/dlangui/platforms/x11/x11app.d @@ -1131,7 +1131,7 @@ version(USE_XCB) { { setStderrLogger(); - setLogLevel(LogLevel.Trace); + Log.setLogLevel(LogLevel.Trace); FreeTypeFontManager ft = new FreeTypeFontManager(); ft.registerFont("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", FontFamily.SansSerif, "DejaVu", false, FontWeight.Normal);