2014-11-26 2 views
1

log4j2의 레이아웃을 XMLLayout으로 설정하려고합니다.layout.XmlLayout 클래스에서 팩토리 메소드를 호출 할 수없는 이유는 무엇입니까?

나는 POM jackson-annotations, jackson-module-jaxb-annotations, jersey-media-json-jackson에 포함되어 있습니다. 또한 PatternLayout을 사용하여 콘솔에 로그하거나 파일을 모두 작동시킬 때도 마찬가지입니다. XMLLayout을 사용하고자 할 때 아래와 같은 예외가 발생합니다. 또한이 스레드에있는 거의 동일한 예외가 있습니다 : Log4j2 SyslogAppender not working,하지만 해결 방법은 Appender 경우에만 해당하며 mdcId 특성이 없으므로 작동하지 않는다고 생각합니다.

XML

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
<Appenders> 
    <Console name="console" target="SYSTEM_OUT"> 
     <XMLLayout /> 
     <!--PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/--> 
    </Console> 
    <!--Flume name="EventLogger" compress="true" type="Embedded"> 
     <Agent host="192.168.1.50" port="41414"/> 
     <RFC5424Layout enterpriseNumber="18060" includeMDC="true" appName="MyApp"/> 
    </Flume--> 
    <File name="MyFile" fileName="logs/app.log"> 
     <!--XMLLayout /--> 

    </File> 
</Appenders> 

<Loggers> 
    <Logger name="EventLogger" level="warn"> 
     <AppenderRef ref="console"/> 
    </Logger> 
    <Root level="warn" additivity="false"> 
     <AppenderRef ref="MyFile"/> 
    </Root> 
</Loggers> 
</Configuration> 

예외

2014-11-26 09:22:45,975 ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.layout.XmlLayout for element XMLLayout. java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
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.createConfiguration(AbstractConfiguration.java:698) 
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:358) 
+0

원인 예외가 있습니까? (InvocationTargetException의 원인) –

답변

1

당신은 잭슨에 대한 종속성을 없을 수 있습니다. 종속성 트리를 확인 했습니까? http://logging.apache.org/log4j/2.x/log4j-core/dependencies.html#Dependency_Tree

당신은이 모든해야 할 수 있습니다

  • com.fasterxml.jackson.core : 잭슨 코어 : 항아리 : 2.4.2
  • com.fasterxml.jackson.core 잭슨 데이터 바인딩을 : 항아리 : 2.4.2
  • com.fasterxml.jackson.core 잭슨 주석 : 항아리 : 2.4.0
  • com.fasterxml.jackson.dataformat 잭슨 DATAFORMAT-XML : 항아리 : 2.4.2
  • com.fasterxml.jackson.module : jackson-m 듈 전 원 모 듈-, JAXB 주석 : 항아리 : 2.4.2
  • org.codehaus.woodstox : stax2-API : 항아리 :

    : 3.1.4

+0

월요일에 확인해 보겠습니다. Jackson은 XMLLayout 용이지만 FlumeAppender (일반 XMLLayout 대신 flume과 동일한 내용)에 대해서도 오류가 발생합니다. –

+0

OK, 도움이되었다고 가정 해 봅시다. 나는 그것이 도움이되는지 정말로 모른다. 왜냐하면 지금 내가 얻었 기 때문이다. 2014-12-05 11 : 06 : 07,891 오류 com.fasterxml.jackson.databind.JsonMappingException : 구현되지 않았습니다 (참조 체인을 통해 : org.apache.logging.log4j.core.impl.Log4jLogEvent [ "Message"])) com .fasterxml.jackson.databind.JsonMappingException : 구현되지 않음 (참조 체인을 통해 : org.apache.logging.log4j.core.impl.Log4jLogEvent [ "Message"]) https://issues.apache.org/jira와 유사 함/browse/LOG4J2-739 –

+0

전체 스택 추적을 표시 할 수 있습니까? –

0

하는 woodstox 코어-5.0.3.jar 추가 예를 들어이 클래스는 내 클래스 경로입니다.

JavaSE-1.8 
jackson-annotations-2.7.0.jar 
jackson-core-2.7.0.jar 
jackson-databind-2.7.0.jar 
jackson-dataformat-xml-2.1.1.jar 
log4j-api-2.5.jar 
log4j-core-2.5.jar 
hamcrest-core-1.3.jar 
junit-4.12.jar 
stax2-api-3.1.4.jar 
woodstox-core-5.0.3.jar 

및 XMLLayout이 작동합니다.

관련 문제