synchronized dlangui.core.logger.Logger; also refactored it a little bit

This commit is contained in:
Donny Viszneki 2014-08-13 16:24:47 -07:00
parent 71fd3086bd
commit dbe7671cf2
4 changed files with 68 additions and 66 deletions

View File

@ -39,71 +39,73 @@ enum LogLevel : int {
Trace Trace
} }
__gshared LogLevel logLevel = LogLevel.Info;
__gshared std.stdio.File logFile;
void setLogLevel(LogLevel level) {
logLevel = level;
}
long currentTimeMillis() { long currentTimeMillis() {
return std.datetime.Clock.currStdTime / 10000; return std.datetime.Clock.currStdTime / 10000;
} }
void setStdoutLogger() { synchronized class Log {
logFile = stdout; static {
} private LogLevel logLevel = LogLevel.Info;
private std.stdio.File logFile;
void setStderrLogger() { void setStdoutLogger() {
logFile = stderr; logFile = stdout;
} }
void setFileLogger(File file) { void setStderrLogger() {
logFile = file; logFile = stderr;
} }
class Log { void setFileLogger(File file) {
static string logLevelName(LogLevel level) { logFile = file;
switch (level) { }
case LogLevel.Fatal: return "F";
case LogLevel.Error: return "E"; void setLogLevel(LogLevel level) {
case LogLevel.Warn: return "W"; logLevel = level;
case LogLevel.Info: return "I"; }
case LogLevel.Debug: return "D";
case LogLevel.Trace: return "V"; string logLevelName(LogLevel level) {
default: return "?"; switch (level) {
} case LogLevel.Fatal: return "F";
} case LogLevel.Error: return "E";
static void log(S...)(LogLevel level, S args) { case LogLevel.Warn: return "W";
if (logLevel >= level && logFile.isOpen) { case LogLevel.Info: return "I";
SysTime ts = Clock.currTime(); case LogLevel.Debug: return "D";
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)); case LogLevel.Trace: return "V";
logFile.writeln(args); default: return "?";
logFile.flush(); }
} }
} void log(S...)(LogLevel level, S args) {
static void v(S...)(S args) { if (logLevel >= level && logFile.isOpen) {
if (logLevel >= LogLevel.Trace && logFile.isOpen) SysTime ts = Clock.currTime();
log(LogLevel.Trace, args); 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);
static void d(S...)(S args) { logFile.flush();
if (logLevel >= LogLevel.Debug && logFile.isOpen) }
log(LogLevel.Debug, args); }
} void v(S...)(S args) {
static void i(S...)(S args) { if (logLevel >= LogLevel.Trace && logFile.isOpen)
if (logLevel >= LogLevel.Info && logFile.isOpen) log(LogLevel.Trace, args);
log(LogLevel.Info, args); }
} void d(S...)(S args) {
static void w(S...)(S args) { if (logLevel >= LogLevel.Debug && logFile.isOpen)
if (logLevel >= LogLevel.Warn && logFile.isOpen) log(LogLevel.Debug, args);
log(LogLevel.Warn, args); }
} void i(S...)(S args) {
static void e(S...)(S args) { if (logLevel >= LogLevel.Info && logFile.isOpen)
if (logLevel >= LogLevel.Error && logFile.isOpen) log(LogLevel.Info, args);
log(LogLevel.Error, args); }
} void w(S...)(S args) {
static void f(S...)(S args) { if (logLevel >= LogLevel.Warn && logFile.isOpen)
if (logLevel >= LogLevel.Fatal && logFile.isOpen) log(LogLevel.Warn, args);
log(LogLevel.Fatal, 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);
}
}
} }

View File

@ -984,7 +984,7 @@ version(USE_SDL) {
int myWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow) int myWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{ {
setFileLogger(std.stdio.File("ui.log", "w")); setFileLogger(std.stdio.File("ui.log", "w"));
setLogLevel(LogLevel.Trace); Log.setLogLevel(LogLevel.Trace);
Log.d("myWinMain()"); Log.d("myWinMain()");
string basePath = exePath(); string basePath = exePath();
Log.i("Current executable: ", exePath()); Log.i("Current executable: ", exePath());
@ -1006,8 +1006,8 @@ version(USE_SDL) {
int main(string[] args) int main(string[] args)
{ {
setStderrLogger(); Log.setStderrLogger();
setLogLevel(LogLevel.Trace); Log.setLogLevel(LogLevel.Warn);
FreeTypeFontManager ft = new FreeTypeFontManager(); FreeTypeFontManager ft = new FreeTypeFontManager();

View File

@ -721,9 +721,9 @@ int myWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int
{ {
setFileLogger(std.stdio.File("ui.log", "w")); setFileLogger(std.stdio.File("ui.log", "w"));
debug { debug {
setLogLevel(LogLevel.Trace); Log.setLogLevel(LogLevel.Trace);
} else { } else {
setLogLevel(LogLevel.Info); Log.setLogLevel(LogLevel.Info);
} }
Log.d("myWinMain()"); Log.d("myWinMain()");
string basePath = exePath(); string basePath = exePath();

View File

@ -1131,7 +1131,7 @@ version(USE_XCB) {
{ {
setStderrLogger(); setStderrLogger();
setLogLevel(LogLevel.Trace); Log.setLogLevel(LogLevel.Trace);
FreeTypeFontManager ft = new FreeTypeFontManager(); FreeTypeFontManager ft = new FreeTypeFontManager();
ft.registerFont("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", FontFamily.SansSerif, "DejaVu", false, FontWeight.Normal); ft.registerFont("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", FontFamily.SansSerif, "DejaVu", false, FontWeight.Normal);