Christian Becker created LOG4NET-458: ----------------------------------------
Summary: LocalSyslogAppender does not support multiple identities Key: LOG4NET-458 URL: https://issues.apache.org/jira/browse/LOG4NET-458 Project: Log4net Issue Type: Bug Components: Appenders Affects Versions: 1.2.13 Reporter: Christian Becker With multiple LocalSyslogAppender where each one has a different identity, everything just gets logged with the identity of the last Appender. In the example below, every log message has the identity of task_info_syslog, even the appender used is rts_syslog. I checked the code and this is a bug in LocalSyslogAppender.Append(). The syslogtag is not part of the syslog() function call, but has to be done using openlog() and after a call to openlog(), the identity set is used for all subsequent syslog() calls. A call to openlog() is only done once in ActivateOptions() and never again, this causes the observed behavior, that the last instance of LocalSyslogAppender wins. A possible fix for this is to add a call to openlog() in Append() before calling syslog(), like: {code} diff --git a/LocalSyslogAppender.cs b/LocalSyslogAppender.cs --- a/LocalSyslogAppender.cs +++ b/LocalSyslogAppender.cs @@ -387,6 +387,8 @@ namespace log4net.Appender int priority = GeneratePriority(m_facility, GetSeverity(loggingEvent.Level)); string message = RenderLoggingEvent(loggingEvent); + // Call libc openlog() first to ensure correct identity and facility is set + openlog(m_handleToIdentity, 1, m_facility); // Call the local libc syslog method // The second argument is a printf style format string syslog(priority, "%s", message); {code} Here is our config for reference: {code} [...] <appender name="rts_syslog" type="log4net.Appender.LocalSyslogAppender"> <facility value="User" /> <identity type="log4net.Util.PatternString" value="foobar/dev/dev1/rts" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}, %level, %message%newline" /> </layout> </appender> [...] <appender name="task_info_syslog" type="log4net.Appender.LocalSyslogAppender"> <facility value="User" /> <identity type="log4net.Util.PatternString" value="foobar/dev/dev1/task-info" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}, %level, %message%newline" /> </layout> </appender> [...] {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)