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
}
__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);
}
}
}

View File

@ -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();

View File

@ -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();

View File

@ -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);