Почему я получаю Невозможно вызвать фабричный метод в классе layout.XmlLayout?

1

Я пытаюсь установить макет в log4j2 в XMLLayout.

Я включил в POM jackson-аннотации, джексон-модуль-jaxb-аннотации, jersey-media-json-jackson. Также, когда я регистрируюсь с помощью PatternLayout для консоли или для работы с файлами, все работает. Когда я хочу использовать XMLLayout, я получаю исключение, как показано ниже. Кроме того, это почти то же исключение, которое есть в этом потоке: Log4j2 SyslogAppender не работает, но решение предназначено только для 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?)
Теги:
logging
configuration
log4j2

2 ответа

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: джексон-DataBind: баночка: 2.4.2
  • com.fasterxml.jackson.core: ДЖЕКСОН-аннотации: банка: 2.4.0
  • com.fasterxml.jackson.dataformat: джексон-DataFormat-XML: банка: 2.4.2
  • com.fasterxml.jackson.module: джексон-модуль-JAXB-аннотаций: баночка: 2.4.2
  • org.codehaus.woodstox: stax2-апи: баночка: 3.1.4
  • 0
    Я проверю это в понедельник. Джексон для XMLLayout, но я получаю такую ошибку и для FlumeAppender (обычно то же самое содержание исключения, но Flume вместо XMLLayout)
  • 0
    ОК, давайте предположим, что это помогло. Я действительно не знаю, помогло ли это, потому что теперь я понимаю. 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"]), похожее на questions.apache.org/jira/browse/LOG4J2-739
Показать ещё 5 комментариев
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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню