libwinpr-utils: added default file output path for wlog
This commit is contained in:
parent
a374525e6a
commit
0b29f72cc4
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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})
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user