Reputation: 31
When I try to write some message to a remote Linux syslog, I use log4j2 with appender syslog and format=RFC5424, and BSD.My configuration file is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Syslog name="bsd" host="9.115.114.133" port="514" protocol="UDP" facility="local5"/>
<Syslog name="RFC5424" format="RFC5424" host="9.115.114.133"
protocol="UDP" appName="MyApp" includeMDC="true"
facility="LOCAL5" enterpriseNumber="18060" newLine="true"
messageId="Audit" id="App"/>
</Appenders>
<Loggers>
<Logger name="test.main" level="warn">
<AppenderRef ref="RFC5424"/>
</Logger>
<Root level="error">
<AppenderRef ref="bsd"/>
</Root>
</Loggers>
When I running a testing program, I always got the error as follows: Caused by: java.lang.IllegalArgumentException: No structured id name was supplied at org.apache.logging.log4j.message.StructuredDataId.(StructuredDataId.java:92) at org.apache.logging.log4j.core.layout.Rfc5424Layout.(Rfc5424Layout.java:139) at org.apache.logging.log4j.core.layout.Rfc5424Layout.createLayout(Rfc5424Layout.java:657) at org.apache.logging.log4j.core.appender.SyslogAppender.createAppender(SyslogAppender.java:133) ... 20 more
2014-11-10 03:21:46,252 ERROR Null object returned for Syslog in Appenders. 2014-11-10 03:21:46,267 ERROR Unable to locate appender RFC5424 for logger test.main
How could I get rid of this error? Thanks.
Upvotes: 3
Views: 6377
Reputation: 42010
You need to include the mdcId
attribute:
<Syslog name="RFC5424" format="RFC5424" host="9.115.114.133"
protocol="UDP" appName="MyApp" mdcId="mdc" includeMDC="true"
facility="LOCAL5" enterpriseNumber="18060" newLine="true"
messageId="Audit" id="App"/>
Upvotes: 7