int TestWLog(int argc, char* argv[]) { wLog* log; wLogLayout* layout; wLogAppender* appender; log = WLog_New("CONSOLE_LOG_TEST"); WLog_SetLogLevel(log, WLOG_INFO); WLog_SetLogAppenderType(log, WLOG_APPENDER_CONSOLE); appender = WLog_GetLogAppender(log); layout = WLog_GetLogLayout(log); WLog_Layout_SetPrefixFormat(log, layout, "[%lv:%mn] [%fl|%fn|%ln] - "); WLog_ConsoleAppender_SetOutputStream(log, (wLogConsoleAppender*) appender, WLOG_CONSOLE_STDERR); WLog_OpenAppender(log); WLog_Print(log, WLOG_INFO, "this is a test"); WLog_Print(log, WLOG_WARN, "this is a %dnd %s", 2, "test"); WLog_Print(log, WLOG_ERROR, "this is an error"); WLog_Print(log, WLOG_TRACE, "this is a trace output"); WLog_CloseAppender(log); WLog_Free(log); log = WLog_New("FILE_LOG_TEST"); WLog_SetLogLevel(log, WLOG_WARN); WLog_SetLogAppenderType(log, WLOG_APPENDER_FILE); appender = WLog_GetLogAppender(log); layout = WLog_GetLogLayout(log); WLog_Layout_SetPrefixFormat(log, layout, "[%lv:%mn] [%fl|%fn|%ln] - "); WLog_FileAppender_SetOutputFileName(log, (wLogFileAppender*) appender, "/tmp/wlog_test.log"); WLog_OpenAppender(log); WLog_Print(log, WLOG_INFO, "this is a test"); WLog_Print(log, WLOG_WARN, "this is a %dnd %s", 2, "test"); WLog_Print(log, WLOG_ERROR, "this is an error"); WLog_Print(log, WLOG_TRACE, "this is a trace output"); WLog_CloseAppender(log); WLog_Free(log); return 0; }
wLog* WLog_Get(LPCSTR name) { wLog* log; if (!(log = WLog_FindChild(name))) { wLog* root = WLog_GetRoot(); if (!root) return NULL; if (!(log = WLog_New(name, root))) return NULL; if (!WLog_AddChild(root, log)) { WLog_Free(log); return NULL; } } return log; }
wLog* WLog_GetRoot(void) { char* env; DWORD nSize; DWORD logAppenderType; if (!g_RootLog) { if (!(g_RootLog = WLog_New("", NULL))) return NULL; g_RootLog->IsRoot = TRUE; WLog_ParseFilters(); logAppenderType = WLOG_APPENDER_CONSOLE; nSize = GetEnvironmentVariableA("WLOG_APPENDER", NULL, 0); if (nSize) { env = (LPSTR) malloc(nSize); if (!env) goto fail; if (!GetEnvironmentVariableA("WLOG_APPENDER", env, nSize)) { fprintf(stderr, "WLOG_APPENDER environment variable modified in my back"); free(env); goto fail; } if (_stricmp(env, "CONSOLE") == 0) logAppenderType = WLOG_APPENDER_CONSOLE; else if (_stricmp(env, "FILE") == 0) logAppenderType = WLOG_APPENDER_FILE; else if (_stricmp(env, "BINARY") == 0) logAppenderType = WLOG_APPENDER_BINARY; #ifdef HAVE_SYSLOG_H else if (_stricmp(env, "SYSLOG") == 0) logAppenderType = WLOG_APPENDER_SYSLOG; #endif /* HAVE_SYSLOG_H */ #ifdef HAVE_JOURNALD_H else if (_stricmp(env, "JOURNALD") == 0) logAppenderType = WLOG_APPENDER_JOURNALD; #endif else if (_stricmp(env, "UDP") == 0) logAppenderType = WLOG_APPENDER_UDP; free(env); } if (!WLog_SetLogAppenderType(g_RootLog, logAppenderType)) goto fail; } return g_RootLog; fail: free(g_RootLog); g_RootLog = NULL; return NULL; }