2014-11-17 4 views
5

Log4j 버전 2.1 (최신 안정 버전)을 사용하고 Syslog appender를 사용하여 syslog 서버에 로그온하려고합니다. 나는 그들의 공식 사이트에서 주어진 구성 (http://logging.apache.org/log4j/2.x/manual/appenders.html#SyslogAppender)을 사용하고 있습니다 : Log4j2 SyslogAppender가 작동하지 않습니다.

<Syslog name="RFC5424" format="RFC5424" host="localhost" port="514" 
     protocol="UDP" appName="MyApp" includeMDC="true" 
     facility="LOCAL0" enterpriseNumber="18060" newLine="true" 
     messageId="Audit" id="App"/> 

내 응용 프로그램을 시작하고 LogManager.getLogger(), 나는 오류 (스택 추적 울부 짖는 소리)를 얻을 할, 그래서

, I 전에 버그 추적기에 오류를보고합니다. 내가 잘못하고 있습니까?

014-11-17 18:26:23,640 ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.SyslogAppender for element Syslog. java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135) 
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:766) 
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:706) 
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:698) 
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:358) 
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:161) 
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:359) 
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:420) 
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138) 
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147) 
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41) 
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175) 
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:426) 
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:408) 
    at Log.<clinit>(Log.java:7) 
Caused by: java.lang.IllegalArgumentException: No structured id name was supplied 
    at org.apache.logging.log4j.message.StructuredDataId.<init>(StructuredDataId.java:92) 
    at org.apache.logging.log4j.core.layout.Rfc5424Layout.<init>(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) 
... 19 more 

답변

8

mdcId 속성을 포함해야합니다. 예 :

<Syslog name="RFC5424" format="RFC5424" host="localhost" port="514" 
     protocol="UDP" appName="MyApp" mdcId="mdc" includeMDC="true" 
     facility="LOCAL0" enterpriseNumber="18060" newLine="true" 
     messageId="Audit" id="App"/>