|
Packit |
1fb8d4 |
#include <winpr/crt.h>
|
|
Packit |
1fb8d4 |
#include <winpr/tchar.h>
|
|
Packit |
1fb8d4 |
#include <winpr/path.h>
|
|
Packit |
1fb8d4 |
#include <winpr/wlog.h>
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
typedef struct
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
UINT32 level;
|
|
Packit Service |
5a9772 |
char* msg;
|
|
Packit Service |
5a9772 |
char* channel;
|
|
Packit |
1fb8d4 |
} test_t;
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
static const char* function = NULL;
|
|
Packit Service |
5a9772 |
static const char* channels[] = { "com.test.channelA", "com.test.channelB" };
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
static const test_t messages[] = { { WLOG_INFO, "this is a test", "com.test.channelA" },
|
|
Packit Service |
5a9772 |
{ WLOG_INFO, "Just some info", "com.test.channelB" },
|
|
Packit Service |
5a9772 |
{ WLOG_WARN, "this is a %dnd %s", "com.test.channelA" },
|
|
Packit Service |
5a9772 |
{ WLOG_WARN, "we're warning a %dnd %s", "com.test.channelB" },
|
|
Packit Service |
5a9772 |
{ WLOG_ERROR, "this is an error", "com.test.channelA" },
|
|
Packit Service |
5a9772 |
{ WLOG_ERROR, "we've got an error", "com.test.channelB" },
|
|
Packit Service |
5a9772 |
{ WLOG_TRACE, "this is a trace output", "com.test.channelA" },
|
|
Packit Service |
5a9772 |
{ WLOG_TRACE, "leaving a trace behind", "com.test.channelB" } };
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
static BOOL success = TRUE;
|
|
Packit |
1fb8d4 |
static int pos = 0;
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
static BOOL check(const wLogMessage* msg)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
BOOL rc = TRUE;
|
|
Packit |
1fb8d4 |
if (!msg)
|
|
Packit |
1fb8d4 |
rc = FALSE;
|
|
Packit |
1fb8d4 |
else if (strcmp(msg->FileName, __FILE__))
|
|
Packit |
1fb8d4 |
rc = FALSE;
|
|
Packit |
1fb8d4 |
else if (strcmp(msg->FunctionName, function))
|
|
Packit |
1fb8d4 |
rc = FALSE;
|
|
Packit |
1fb8d4 |
else if (strcmp(msg->PrefixString, messages[pos].channel))
|
|
Packit |
1fb8d4 |
rc = FALSE;
|
|
Packit |
1fb8d4 |
else if (msg->Level != messages[pos].level)
|
|
Packit |
1fb8d4 |
rc = FALSE;
|
|
Packit |
1fb8d4 |
else if (strcmp(msg->FormatString, messages[pos].msg))
|
|
Packit |
1fb8d4 |
rc = FALSE;
|
|
Packit |
1fb8d4 |
pos++;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if (!rc)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
fprintf(stderr, "Test failed!\n");
|
|
Packit |
1fb8d4 |
success = FALSE;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
return rc;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
BOOL CallbackAppenderMessage(const wLogMessage* msg)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
check(msg);
|
|
Packit |
1fb8d4 |
return TRUE;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
BOOL CallbackAppenderData(const wLogMessage* msg)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
fprintf(stdout, "%s\n", __FUNCTION__);
|
|
Packit |
1fb8d4 |
return TRUE;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
BOOL CallbackAppenderImage(const wLogMessage* msg)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
fprintf(stdout, "%s\n", __FUNCTION__);
|
|
Packit |
1fb8d4 |
return TRUE;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
BOOL CallbackAppenderPackage(const wLogMessage* msg)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
fprintf(stdout, "%s\n", __FUNCTION__);
|
|
Packit |
1fb8d4 |
return TRUE;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
int TestWLogCallback(int argc, char* argv[])
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
wLog* root;
|
|
Packit |
1fb8d4 |
wLog* logA;
|
|
Packit |
1fb8d4 |
wLog* logB;
|
|
Packit |
1fb8d4 |
wLogLayout* layout;
|
|
Packit |
1fb8d4 |
wLogAppender* appender;
|
|
Packit |
1fb8d4 |
wLogCallbacks callbacks;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
function = __FUNCTION__;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
root = WLog_GetRoot();
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
WLog_SetLogAppenderType(root, WLOG_APPENDER_CALLBACK);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
appender = WLog_GetLogAppender(root);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
callbacks.data = CallbackAppenderData;
|
|
Packit |
1fb8d4 |
callbacks.image = CallbackAppenderImage;
|
|
Packit |
1fb8d4 |
callbacks.message = CallbackAppenderMessage;
|
|
Packit |
1fb8d4 |
callbacks.package = CallbackAppenderPackage;
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
if (!WLog_ConfigureAppender(appender, "callbacks", (void*)&callbacks))
|
|
Packit |
1fb8d4 |
return -1;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
layout = WLog_GetLogLayout(root);
|
|
Packit |
1fb8d4 |
WLog_Layout_SetPrefixFormat(root, layout, "%mn");
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
WLog_OpenAppender(root);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
logA = WLog_Get(channels[0]);
|
|
Packit |
1fb8d4 |
logB = WLog_Get(channels[1]);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
WLog_SetLogLevel(logA, WLOG_TRACE);
|
|
Packit |
1fb8d4 |
WLog_SetLogLevel(logB, WLOG_TRACE);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
WLog_Print(logA, messages[0].level, messages[0].msg);
|
|
Packit |
1fb8d4 |
WLog_Print(logB, messages[1].level, messages[1].msg);
|
|
Packit |
1fb8d4 |
WLog_Print(logA, messages[2].level, messages[2].msg, 2, "test");
|
|
Packit |
1fb8d4 |
WLog_Print(logB, messages[3].level, messages[3].msg, 2, "time");
|
|
Packit |
1fb8d4 |
WLog_Print(logA, messages[4].level, messages[4].msg);
|
|
Packit |
1fb8d4 |
WLog_Print(logB, messages[5].level, messages[5].msg);
|
|
Packit |
1fb8d4 |
WLog_Print(logA, messages[6].level, messages[6].msg);
|
|
Packit |
1fb8d4 |
WLog_Print(logB, messages[7].level, messages[7].msg);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
WLog_CloseAppender(root);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
return success ? 0 : -1;
|
|
Packit |
1fb8d4 |
}
|