21#include <winpr/config.h>
23#include "SyslogAppender.h"
31static int getSyslogLevel(DWORD level)
52static BOOL WLog_SyslogAppender_Open(wLog* log, wLogAppender* appender)
54 return !(!log || !appender);
57static BOOL WLog_SyslogAppender_Close(wLog* log, wLogAppender* appender)
59 return !(!log || !appender);
62static BOOL WLog_SyslogAppender_WriteMessage(wLog* log, wLogAppender* appender,
67 if (!log || !appender || !message)
70 syslogLevel = getSyslogLevel(message->Level);
72 syslog(syslogLevel,
"%s", message->TextString);
77static BOOL WLog_SyslogAppender_WriteDataMessage(wLog* log, wLogAppender* appender,
82 if (!log || !appender || !message)
85 syslogLevel = getSyslogLevel(message->Level);
87 syslog(syslogLevel,
"skipped data message of %" PRIuz
" bytes", message->Length);
92static BOOL WLog_SyslogAppender_WriteImageMessage(wLog* log, wLogAppender* appender,
97 if (!log || !appender || !message)
100 syslogLevel = getSyslogLevel(message->Level);
101 if (syslogLevel >= 0)
102 syslog(syslogLevel,
"skipped image (%" PRIuz
"x%" PRIuz
"x%" PRIuz
")", message->ImageWidth,
103 message->ImageHeight, message->ImageBpp);
108static void WLog_SyslogAppender_Free(wLogAppender* appender)
113wLogAppender* WLog_SyslogAppender_New(WINPR_ATTR_UNUSED wLog* log)
115 wLogSyslogAppender* appender = (wLogSyslogAppender*)calloc(1,
sizeof(wLogSyslogAppender));
119 appender->common.Type = WLOG_APPENDER_SYSLOG;
121 appender->common.Open = WLog_SyslogAppender_Open;
122 appender->common.Close = WLog_SyslogAppender_Close;
123 appender->common.WriteMessage = WLog_SyslogAppender_WriteMessage;
124 appender->common.WriteDataMessage = WLog_SyslogAppender_WriteDataMessage;
125 appender->common.WriteImageMessage = WLog_SyslogAppender_WriteImageMessage;
126 appender->common.Free = WLog_SyslogAppender_Free;
128 return &appender->common;