libwinpr-utils: added default file output path for wlog

This commit is contained in:
Marc-André Moreau 2013-10-01 16:50:47 -04:00
parent a374525e6a
commit 0b29f72cc4
5 changed files with 58 additions and 6 deletions

View File

@ -114,6 +114,8 @@ struct _wLogFileAppender
WLOG_APPENDER_COMMON();
char* FileName;
char* FilePath;
char* FullFileName;
FILE* FileDescriptor;
};
typedef struct _wLogFileAppender wLogFileAppender;
@ -158,6 +160,7 @@ WINPR_API int WLog_CloseAppender(wLog* log);
WINPR_API void WLog_ConsoleAppender_SetOutputStream(wLog* log, wLogConsoleAppender* appender, int outputStream);
WINPR_API void WLog_FileAppender_SetOutputFileName(wLog* log, wLogFileAppender* appender, const char* filename);
WINPR_API void WLog_FileAppender_SetOutputFilePath(wLog* log, wLogFileAppender* appender, const char* filepath);
WINPR_API wLogLayout* WLog_GetLogLayout(wLog* log);
WINPR_API void WLog_Layout_SetPrefixFormat(wLog* log, wLogLayout* layout, const char* format);

View File

@ -89,7 +89,7 @@ endif()
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD} INTERNAL
MODULE winpr
MODULES winpr-crt winpr-synch winpr-sysinfo)
MODULES winpr-crt winpr-file winpr-path winpr-synch winpr-sysinfo)
if(MONOLITHIC_BUILD)
set(WINPR_LIBS ${WINPR_LIBS} ${${MODULE_PREFIX}_LIBS} PARENT_SCOPE)

View File

@ -27,7 +27,7 @@ add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MONOLITHIC ${MONOLITHIC_BUILD}
MODULE winpr
MODULES winpr-crt winpr-thread winpr-utils)
MODULES winpr-crt winpr-path winpr-thread winpr-utils)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -1,11 +1,13 @@
#include <winpr/crt.h>
#include <winpr/tchar.h>
#include <winpr/path.h>
#include <winpr/wlog.h>
int TestWLog(int argc, char* argv[])
{
wLog* log;
char* TempPath;
wLogLayout* layout;
wLogAppender* appender;
@ -40,9 +42,13 @@ int TestWLog(int argc, char* argv[])
layout = WLog_GetLogLayout(log);
WLog_Layout_SetPrefixFormat(log, layout, "[%lv:%mn] [%fl|%fn|%ln] - ");
WLog_FileAppender_SetOutputFileName(log, (wLogFileAppender*) appender, "/tmp/wlog_test.log");
TempPath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog");
WLog_FileAppender_SetOutputFilePath(log, (wLogFileAppender*) appender, TempPath);
WLog_OpenAppender(log);
free(TempPath);
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");

View File

@ -22,6 +22,9 @@
#endif
#include <winpr/crt.h>
#include <winpr/file.h>
#include <winpr/path.h>
#include <winpr/thread.h>
#include <winpr/wlog.h>
@ -42,12 +45,46 @@ void WLog_FileAppender_SetOutputFileName(wLog* log, wLogFileAppender* appender,
appender->FileName = _strdup(filename);
}
void WLog_FileAppender_SetOutputFilePath(wLog* log, wLogFileAppender* appender, const char* filepath)
{
if (!appender)
return;
if (!filepath)
return;
appender->FilePath = _strdup(filepath);
}
int WLog_FileAppender_Open(wLog* log, wLogFileAppender* appender)
{
if (!appender->FileName)
return -1;
DWORD ProcessId;
appender->FileDescriptor = fopen(appender->FileName, "a+");
ProcessId = GetCurrentProcessId();
if (!appender->FilePath)
{
appender->FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog");
}
if (!PathFileExistsA(appender->FilePath))
{
CreateDirectoryA(appender->FilePath, 0);
UnixChangeFileMode(appender->FilePath, 0xFFFF);
}
if (!appender->FileName)
{
appender->FileName = (char*) malloc(256);
sprintf_s(appender->FileName, 256, "%u.log", ProcessId);
}
if (!appender->FullFileName)
{
appender->FullFileName = GetCombinedPath(appender->FilePath, appender->FileName);
}
appender->FileDescriptor = fopen(appender->FullFileName, "a+");
if (!appender->FileDescriptor)
return -1;
@ -113,6 +150,12 @@ void WLog_FileAppender_Free(wLog* log, wLogFileAppender* appender)
if (appender->FileName)
free(appender->FileName);
if (appender->FilePath)
free(appender->FilePath);
if (appender->FullFileName)
free(appender->FullFileName);
free(appender);
}
}