Console logging to stdout and stderr

With this patch the default for the console logger
changes to writing to stdout for TRACE, DEBUG and INFO
messages and stderr for WARNING, ERROR and FATAL messages.
This commit is contained in:
Armin Novak 2015-05-06 10:56:30 +02:00
parent 1de81c30a4
commit c375071b5d
2 changed files with 36 additions and 10 deletions

View File

@ -146,9 +146,10 @@ struct _wLogAppender
WLOG_APPENDER_COMMON(); WLOG_APPENDER_COMMON();
}; };
#define WLOG_CONSOLE_DEFAULT 0
#define WLOG_CONSOLE_STDOUT 1 #define WLOG_CONSOLE_STDOUT 1
#define WLOG_CONSOLE_STDERR 2 #define WLOG_CONSOLE_STDERR 2
#define WLOG_CONSOLE_DEBUG 3 #define WLOG_CONSOLE_DEBUG 4
struct _wLogConsoleAppender struct _wLogConsoleAppender
{ {

View File

@ -47,14 +47,14 @@ void WLog_ConsoleAppender_SetOutputStream(wLog* log, wLogConsoleAppender* append
return; return;
if (outputStream < 0) if (outputStream < 0)
outputStream = WLOG_CONSOLE_STDOUT; outputStream = WLOG_CONSOLE_DEFAULT;
if (outputStream == WLOG_CONSOLE_STDOUT) if (outputStream == WLOG_CONSOLE_STDOUT)
appender->outputStream = WLOG_CONSOLE_STDOUT; appender->outputStream = WLOG_CONSOLE_STDOUT;
else if (outputStream == WLOG_CONSOLE_STDERR) else if (outputStream == WLOG_CONSOLE_STDERR)
appender->outputStream = WLOG_CONSOLE_STDERR; appender->outputStream = WLOG_CONSOLE_STDERR;
else else
appender->outputStream = WLOG_CONSOLE_STDOUT; appender->outputStream = WLOG_CONSOLE_DEFAULT;
} }
int WLog_ConsoleAppender_Open(wLog* log, wLogConsoleAppender* appender) int WLog_ConsoleAppender_Open(wLog* log, wLogConsoleAppender* appender)
@ -123,8 +123,33 @@ int WLog_ConsoleAppender_WriteMessage(wLog* log, wLogConsoleAppender* appender,
__android_log_print(level, log->Name, "%s%s", message->PrefixString, message->TextString); __android_log_print(level, log->Name, "%s%s", message->PrefixString, message->TextString);
#else #else
fp = (appender->outputStream == WLOG_CONSOLE_STDERR) ? stderr : stdout; switch(appender->outputStream)
{
case WLOG_CONSOLE_STDOUT:
fp = stdout;
break;
case WLOG_CONSOLE_STDERR:
fp = stderr;
break;
default:
switch(message->Level)
{
case WLOG_TRACE:
case WLOG_DEBUG:
case WLOG_INFO:
fp = stdout;
break;
case WLOG_OFF:
fp = NULL;
break;
default:
fp = stderr;
break;
}
break;
}
if (fp)
fprintf(fp, "%s%s\n", message->PrefixString, message->TextString); fprintf(fp, "%s%s\n", message->PrefixString, message->TextString);
#endif #endif
return 1; return 1;
@ -211,7 +236,7 @@ wLogConsoleAppender* WLog_ConsoleAppender_New(wLog* log)
ConsoleAppender->WritePacketMessage = ConsoleAppender->WritePacketMessage =
(WLOG_APPENDER_WRITE_PACKET_MESSAGE_FN) WLog_ConsoleAppender_WritePacketMessage; (WLOG_APPENDER_WRITE_PACKET_MESSAGE_FN) WLog_ConsoleAppender_WritePacketMessage;
ConsoleAppender->outputStream = WLOG_CONSOLE_STDOUT; ConsoleAppender->outputStream = WLOG_CONSOLE_DEFAULT;
#ifdef _WIN32 #ifdef _WIN32
if (IsDebuggerPresent()) if (IsDebuggerPresent())