Take in account @bmiklautz remarks
* I have added a function to set the journal identifier * the appender name has been changed from SYSTEMD to JOURNALD
This commit is contained in:
parent
e3915b66b7
commit
2a8de84342
@ -205,14 +205,13 @@ struct _wLogSyslogAppender
|
||||
};
|
||||
typedef struct _wLogSyslogAppender wLogSyslogAppender;
|
||||
|
||||
#ifdef HAVE_JOURNALD_H
|
||||
struct _wLogJournaldAppender
|
||||
{
|
||||
WLOG_APPENDER_COMMON();
|
||||
char *identifier;
|
||||
FILE *stream;
|
||||
};
|
||||
typedef struct _wLogJournaldAppender wLogJournaldAppender;
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
|
@ -35,12 +35,42 @@
|
||||
#include "wlog/Message.h"
|
||||
#include "wlog/JournaldAppender.h"
|
||||
|
||||
BOOL Wlog_JournaldAppender_SetIdentifier(wLogJournaldAppender* appender, const char *id)
|
||||
{
|
||||
if (appender->identifier)
|
||||
free(appender->identifier);
|
||||
|
||||
if (appender->stream)
|
||||
{
|
||||
fclose(appender->stream);
|
||||
appender->stream = NULL;
|
||||
}
|
||||
|
||||
return ((appender->identifier = _strdup(id)) != NULL);
|
||||
}
|
||||
|
||||
static BOOL WLog_JournaldAppender_Open(wLog* log, wLogJournaldAppender* appender)
|
||||
{
|
||||
int fd;
|
||||
|
||||
if (!log || !appender)
|
||||
return FALSE;
|
||||
|
||||
if (appender->stream)
|
||||
return TRUE;
|
||||
|
||||
fd = sd_journal_stream_fd(appender->identifier, LOG_INFO, 1);
|
||||
if (fd < 0)
|
||||
return FALSE;
|
||||
|
||||
appender->stream = fdopen(fd, "w");
|
||||
if (!appender->stream)
|
||||
{
|
||||
close(fd);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
setbuffer(appender->stream, NULL, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -109,9 +139,7 @@ wLogJournaldAppender* WLog_JournaldAppender_New(wLog* log)
|
||||
{
|
||||
wLogJournaldAppender* appender;
|
||||
DWORD nSize;
|
||||
LPSTR env = NULL;
|
||||
LPCSTR name;
|
||||
int fd;
|
||||
|
||||
appender = (wLogJournaldAppender*) calloc(1, sizeof(wLogJournaldAppender));
|
||||
if (!appender)
|
||||
@ -132,32 +160,26 @@ wLogJournaldAppender* WLog_JournaldAppender_New(wLog* log)
|
||||
nSize = GetEnvironmentVariableA(name, NULL, 0);
|
||||
if (nSize)
|
||||
{
|
||||
env = (LPSTR) malloc(nSize);
|
||||
if (!env)
|
||||
appender->identifier = (LPSTR) malloc(nSize);
|
||||
if (!appender->identifier)
|
||||
goto error_env_malloc;
|
||||
|
||||
GetEnvironmentVariableA(name, env, nSize);
|
||||
GetEnvironmentVariableA(name, appender->identifier, nSize);
|
||||
|
||||
if (!WLog_JournaldAppender_Open(log, appender))
|
||||
goto error_open;
|
||||
}
|
||||
else
|
||||
{
|
||||
env = _strdup("winpr");
|
||||
appender->identifier = _strdup("winpr");
|
||||
if (!appender->identifier)
|
||||
goto error_env_malloc;
|
||||
}
|
||||
|
||||
fd = sd_journal_stream_fd(env, LOG_INFO, 1);
|
||||
if (fd < 0)
|
||||
goto error_journal_fd;
|
||||
|
||||
appender->stream = fdopen(fd, "w");
|
||||
if (!appender->stream)
|
||||
goto error_stream_open;
|
||||
setbuffer(appender->stream, NULL, 0);
|
||||
free(env);
|
||||
return appender;
|
||||
|
||||
error_stream_open:
|
||||
close(fd);
|
||||
error_journal_fd:
|
||||
free(env);
|
||||
error_open:
|
||||
free(appender->identifier);
|
||||
error_env_malloc:
|
||||
free(appender);
|
||||
return NULL;
|
||||
@ -169,6 +191,7 @@ void WLog_JournaldAppender_Free(wLog* log, wLogJournaldAppender* appender)
|
||||
{
|
||||
if (appender->stream)
|
||||
fclose(appender->stream);
|
||||
free(appender->identifier);
|
||||
free(appender);
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,7 @@
|
||||
|
||||
WINPR_API wLogJournaldAppender* WLog_JournaldAppender_New(wLog* log);
|
||||
WINPR_API void WLog_JournaldAppender_Free(wLog* log, wLogJournaldAppender* appender);
|
||||
WINPR_API BOOL Wlog_JournaldAppender_SetIdentifier(wLogJournaldAppender* appender, const char *id);
|
||||
|
||||
|
||||
#endif /* WINPR_LIBWINPR_UTILS_WLOG_JOURNALDAPPENDER_H_ */
|
||||
|
@ -703,7 +703,7 @@ wLog* WLog_GetRoot()
|
||||
logAppenderType = WLOG_APPENDER_SYSLOG;
|
||||
#endif /* HAVE_SYSLOG_H */
|
||||
#ifdef HAVE_JOURNALD_H
|
||||
else if (_stricmp(env, "SYSTEMD") == 0)
|
||||
else if (_stricmp(env, "JOURNALD") == 0)
|
||||
logAppenderType = WLOG_APPENDER_JOURNALD;
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user