From c375071b5d5019c263ab8e0b2692fe629695e8df Mon Sep 17 00:00:00 2001
From: Armin Novak <armin.novak@thincast.com>
Date: Wed, 6 May 2015 10:56:30 +0200
Subject: [PATCH 1/3] 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.
---
 winpr/include/winpr/wlog.h                  |  7 ++--
 winpr/libwinpr/utils/wlog/ConsoleAppender.c | 39 +++++++++++++++++----
 2 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/winpr/include/winpr/wlog.h b/winpr/include/winpr/wlog.h
index bd55ffbf2..aea7a0d78 100644
--- a/winpr/include/winpr/wlog.h
+++ b/winpr/include/winpr/wlog.h
@@ -146,9 +146,10 @@ struct _wLogAppender
 	WLOG_APPENDER_COMMON();
 };
 
-#define WLOG_CONSOLE_STDOUT	1
-#define WLOG_CONSOLE_STDERR	2
-#define WLOG_CONSOLE_DEBUG	3
+#define WLOG_CONSOLE_DEFAULT	0
+#define WLOG_CONSOLE_STDOUT		1
+#define WLOG_CONSOLE_STDERR		2
+#define WLOG_CONSOLE_DEBUG		4
 
 struct _wLogConsoleAppender
 {
diff --git a/winpr/libwinpr/utils/wlog/ConsoleAppender.c b/winpr/libwinpr/utils/wlog/ConsoleAppender.c
index 5de8e15dd..77beb3dfe 100644
--- a/winpr/libwinpr/utils/wlog/ConsoleAppender.c
+++ b/winpr/libwinpr/utils/wlog/ConsoleAppender.c
@@ -47,14 +47,14 @@ void WLog_ConsoleAppender_SetOutputStream(wLog* log, wLogConsoleAppender* append
 		return;
 
 	if (outputStream < 0)
-		outputStream = WLOG_CONSOLE_STDOUT;
+		outputStream = WLOG_CONSOLE_DEFAULT;
 
 	if (outputStream == WLOG_CONSOLE_STDOUT)
 		appender->outputStream = WLOG_CONSOLE_STDOUT;
 	else if (outputStream == WLOG_CONSOLE_STDERR)
 		appender->outputStream = WLOG_CONSOLE_STDERR;
 	else
-		appender->outputStream = WLOG_CONSOLE_STDOUT;
+		appender->outputStream = WLOG_CONSOLE_DEFAULT;
 }
 
 int WLog_ConsoleAppender_Open(wLog* log, wLogConsoleAppender* appender)
@@ -123,9 +123,34 @@ int WLog_ConsoleAppender_WriteMessage(wLog* log, wLogConsoleAppender* appender,
 		__android_log_print(level, log->Name, "%s%s", message->PrefixString, message->TextString);
 
 #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;
+	}
 
-	fprintf(fp, "%s%s\n", message->PrefixString, message->TextString);
+	if (fp)
+		fprintf(fp, "%s%s\n", message->PrefixString, message->TextString);
 #endif
 	return 1;
 }
@@ -211,11 +236,11 @@ wLogConsoleAppender* WLog_ConsoleAppender_New(wLog* log)
 	ConsoleAppender->WritePacketMessage =
 			(WLOG_APPENDER_WRITE_PACKET_MESSAGE_FN) WLog_ConsoleAppender_WritePacketMessage;
 
-	ConsoleAppender->outputStream = WLOG_CONSOLE_STDOUT;
+	ConsoleAppender->outputStream = WLOG_CONSOLE_DEFAULT;
 
 #ifdef _WIN32
-    if (IsDebuggerPresent())
-        ConsoleAppender->outputStream = WLOG_CONSOLE_DEBUG;
+		if (IsDebuggerPresent())
+				ConsoleAppender->outputStream = WLOG_CONSOLE_DEBUG;
 #endif
 
 	return ConsoleAppender;

From c0fbaa579ba24c356e9d500714e04fee9e632f3c Mon Sep 17 00:00:00 2001
From: Armin Novak <armin.novak@thincast.com>
Date: Wed, 6 May 2015 10:58:57 +0200
Subject: [PATCH 2/3] Not writing messages if level is WLOG_OFF.

---
 winpr/libwinpr/utils/wlog/ConsoleAppender.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/winpr/libwinpr/utils/wlog/ConsoleAppender.c b/winpr/libwinpr/utils/wlog/ConsoleAppender.c
index 77beb3dfe..39115d93f 100644
--- a/winpr/libwinpr/utils/wlog/ConsoleAppender.c
+++ b/winpr/libwinpr/utils/wlog/ConsoleAppender.c
@@ -139,9 +139,6 @@ int WLog_ConsoleAppender_WriteMessage(wLog* log, wLogConsoleAppender* appender,
 				case WLOG_INFO:
 					fp = stdout;
 					break;
-				case WLOG_OFF:
-					fp = NULL;
-					break;
 				default:
 					fp = stderr;
 					break;
@@ -149,7 +146,7 @@ int WLog_ConsoleAppender_WriteMessage(wLog* log, wLogConsoleAppender* appender,
 			break;
 	}
 
-	if (fp)
+	if (message->Level != WLOG_OFF)
 		fprintf(fp, "%s%s\n", message->PrefixString, message->TextString);
 #endif
 	return 1;

From 1d3e847f12ba319849ffc166580227a0a7f6e685 Mon Sep 17 00:00:00 2001
From: Armin Novak <armin.novak@thincast.com>
Date: Wed, 6 May 2015 15:36:54 +0200
Subject: [PATCH 3/3] Fixed broken indent.

---
 winpr/libwinpr/utils/wlog/ConsoleAppender.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/winpr/libwinpr/utils/wlog/ConsoleAppender.c b/winpr/libwinpr/utils/wlog/ConsoleAppender.c
index 39115d93f..67ecdcb6e 100644
--- a/winpr/libwinpr/utils/wlog/ConsoleAppender.c
+++ b/winpr/libwinpr/utils/wlog/ConsoleAppender.c
@@ -236,8 +236,8 @@ wLogConsoleAppender* WLog_ConsoleAppender_New(wLog* log)
 	ConsoleAppender->outputStream = WLOG_CONSOLE_DEFAULT;
 
 #ifdef _WIN32
-		if (IsDebuggerPresent())
-				ConsoleAppender->outputStream = WLOG_CONSOLE_DEBUG;
+	if (IsDebuggerPresent())
+		ConsoleAppender->outputStream = WLOG_CONSOLE_DEBUG;
 #endif
 
 	return ConsoleAppender;