我正在尝试将log4j2中的布局设置为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 :(得分:1)
你可能错过了杰克逊的依赖。你检查了依赖树了吗? http://logging.apache.org/log4j/2.x/log4j-core/dependencies.html#Dependency_Tree
您可能需要以下所有这些:
答案 1 :(得分:0)
添加woodstox-core-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有效。