From 1bbda2c030b5f99d4551a0d280f033f61ec442a0 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Tue, 27 Dec 2011 20:10:19 +0100 Subject: [PATCH] Added simple log-file support. Use environment variable "LAMEXP_LOGFILE" to setup a log file. --- src/Config.h | 2 +- src/Global.cpp | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/Config.h b/src/Config.h index 0fd19a8f..ddcfb7ac 100644 --- a/src/Config.h +++ b/src/Config.h @@ -30,7 +30,7 @@ #define VER_LAMEXP_MINOR_LO 4 #define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_PATCH 12 -#define VER_LAMEXP_BUILD 853 +#define VER_LAMEXP_BUILD 854 /////////////////////////////////////////////////////////////////////////////// // Tool versions (minimum expected versions!) diff --git a/src/Global.cpp b/src/Global.cpp index bdebebf4..37a3c652 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -56,6 +56,7 @@ #include #include #include +#include //COM includes #include @@ -229,6 +230,9 @@ static const DWORD g_main_thread_id = GetCurrentThreadId(); //Session ending flag static bool g_sessionIsEnding = false; +//Log file +static FILE *g_lamexp_log_file = NULL; + /////////////////////////////////////////////////////////////////////////////// // GLOBAL FUNCTIONS /////////////////////////////////////////////////////////////////////////////// @@ -401,11 +405,14 @@ void lamexp_message_handler(QtMsgType type, const char *msg) QMutexLocker lock(&g_lamexp_message_mutex); - //if((strlen(msg) > 8) && (_strnicmp(msg, "@BASE64@", 8) == 0)) - //{ - // buffer = _strdup(QByteArray::fromBase64(msg + 8).constData()); - // if(buffer) text = buffer; - //} + if(g_lamexp_log_file) + { + static char prefix[] = "DWCF"; + int index = qBound(0, static_cast(type), 3); + QString str = QString::fromUtf8(msg).trimmed().replace('\n', '\t'); + fprintf(g_lamexp_log_file, "[%c][%04I64d] %s\r\n", prefix[index], _time64(NULL) % 3600I64, str.toUtf8().constData()); + fflush(g_lamexp_log_file); + } if(g_lamexp_console_attached) { @@ -476,6 +483,22 @@ void lamexp_init_console(int argc, char* argv[]) { bool enableConsole = lamexp_version_demo(); + if(_environ) + { + wchar_t *logfile = NULL; + size_t logfile_len = 0; + if(!_wdupenv_s(&logfile, &logfile_len, L"LAMEXP_LOGFILE")) + { + FILE *temp = NULL; + if(!_wfopen_s(&temp, logfile, L"wb")) + { + fprintf(temp, "%c%c%c", 0xEF, 0xBB, 0xBF); + g_lamexp_log_file = temp; + } + free(logfile); + } + } + if(!LAMEXP_DEBUG) { for(int i = 0; i < argc; i++) @@ -1875,6 +1898,13 @@ void lamexp_finalization(void) LAMEXP_DELETE(g_lamexp_ipc_ptr.sharedmem); LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read); LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write); + + //Close log file + if(g_lamexp_log_file) + { + fclose(g_lamexp_log_file); + g_lamexp_log_file = NULL; + } } /* -- 2.11.0