ОШИБКА Appenders содержит недопустимый элемент или атрибут "Http" - PullRequest
0 голосов
/ 27 июня 2018

Я использую приложение Log4j Http для отправки данных в Splunk с помощью mule cloudhub. При сборке выдает ошибку:

ОШИБКА Appenders содержит недопустимый элемент или атрибут Http

и я не вижу данных в Splunk.

Ошибка происходит с конфигурацией Log4j:

<Http name="Splunktest" url="myurl" token="mytoken"  
disableCertificateValidation="true"></Http>

Во время сборки maven выдает указанную ошибку. Mule runtime version 3.8.4

Кто-нибудь еще сталкивался с такой же ошибкой?

Весь Log4j для справки

<!--These are some of the loggers you can enable. 
    There are several more you can find in the documentation. 
    Besides this log4j configuration, you can also use Java VM environment variables
    to enable other logs like network (-Djavax.net.debug=ssl or all) and 
    Garbage Collector (-XX:+PrintGC). These will be append to the console, so you will 
    see them in the mule_ee.log file. -->


<Appenders>
    <RollingFile name="file" fileName="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}splunk.log" 
             filePattern="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}splunk-%i.log">
        <PatternLayout pattern="%d [%t] %-5p %c - %m%n" />
        <SizeBasedTriggeringPolicy size="10 MB" />
        <DefaultRolloverStrategy max="10"/>
    </RollingFile>

    <Http name="Splunktest" url="myurl" token="mytoken" disableCertificateValidation="true"></Http>

</Appenders>

<Loggers>


    <!-- Http Logger shows wire traffic on DEBUG -->
    <AsyncLogger name="org.mule.module.http.internal.HttpMessageLogger" level="WARN"/>

    <!-- JDBC Logger shows queries and parameters values on DEBUG -->
    <AsyncLogger name="com.mulesoft.mule.transport.jdbc" level="WARN"/>

    <!-- CXF is used heavily by Mule for web services -->
    <AsyncLogger name="org.apache.cxf" level="WARN"/>

    <!-- Apache Commons tend to make a lot of noise which can clutter the log-->
    <AsyncLogger name="org.apache" level="WARN"/>

    <!-- Reduce startup noise -->
    <AsyncLogger name="org.springframework.beans.factory" level="WARN"/>

    <!-- Mule classes -->
    <AsyncLogger name="org.mule" level="INFO"/>
    <AsyncLogger name="com.mulesoft" level="INFO"/>

    <!-- Reduce DM verbosity -->
    <AsyncLogger name="org.jetel" level="WARN"/>
    <AsyncLogger name="Tracking" level="WARN"/>

    <AsyncRoot level="INFO">
        <AppenderRef ref="file" />
    </AsyncRoot>
     <AsyncLogger name="splunk.logger" level="INFO" >
      <AppenderRef ref="Splunktest" />

    </AsyncLogger>
</Loggers>

1 Ответ

0 голосов
/ 09 июня 2019

Приложение Http не включено в версию log4j2, используемую средой выполнения mule 3.8.4. Насколько я знаю, последняя версия, используемая во время выполнения 3.X.X - это log4j2 2.8.2

enter image description here

и как вы можете видеть из кода здесь , он не определяет ни одного Http-аппендера.

Апплет Http был представлен в log4j2 2.10.0 (код здесь ), поэтому у вас есть 2 варианта:

  • включите в ваше приложение log4j2 версии 2.10.0 и попытайтесь настроить переопределение загрузчика классов, как описано здесь
  • извлеките класс приложения Http и его зависимости из версии 2.10.0, упакуйте его в jar-файл и импортируйте в ваш проект, см. Рисунок ниже: log4j2-http-appender

Надеюсь, это поможет ...

...