2017-12-05 5 views
0

おはよう!私は、WARファイルにコンパイルされ、wildfly-10.1.0-FINALで実行されているプロジェクトを持っています。いくつかの時間前に私はロギングシステムを設定し、すべてうまくいきました。 2〜3週間後、多くのコミットが行われた後、開発者の1人が、loggingはwildflyのserver.logファイルにのみ送られ、ログは設定されません。設定済みのログは空です。繰り返しますが、ロギング設定は変更されませんでした。どうなり得るか?slf4j + log4j2ファイルへの書き込み

のpom.xml

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.19</version> 
    <scope>${artefact.scope}</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-slf4j-impl</artifactId> 
    <version>2.5</version> 
    <scope>${artefact.scope}</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-api</artifactId> 
    <version>2.5</version> 
    <scope>${artefact.scope}</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-core</artifactId> 
    <version>2.5</version> 
    <scope>${artefact.scope}</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-jcl</artifactId> 
    <version>2.5</version> 
    <scope>${artefact.scope}</scope> 
</dependency> 

のJBoss-展開するstructure.xml

<deployment> 
    <dependencies> 
     <module name="org.jboss.ironjacamar.jdbcadapters" /> 
     <module name="org.postgres" /> 
    </dependencies> 
    <exclusions> 
     <module name="org.apache.log4j" /> 
    </exclusions> 
    <exclude-subsystems> 
     <subsystem name="logging"/> 
    </exclude-subsystems> 
</deployment> 

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="trace"> 
    <Properties> 

<Property name="log-path">${env:LOG_HOME:-/opt/wildfly-10.1.0.Final/standalone/log/}/admin/</Property> 
</Properties> 
<Appenders> 
    <Console name="console-log" target="SYSTEM_OUT"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %C:%c{1}:%L - %msg%n"/> 
    </Console> 

    <RollingFile name="ADMIN" fileName="${log-path}/admin.log" 
       filePattern="${log-path}/admin-%d{yyyy-MM-dd}.log.gz"> 
     <PatternLayout> 
      <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %C:%c{1}:%L - %msg%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
     </Policies> 
    </RollingFile> 

</Appenders> 
<Loggers> 

    <Logger name="my.package" level="INFO" additivity="false" includeLocation="true"> 
     <appender-ref ref="ADMIN" level="INFO"/> 
     <appender-ref ref="console-log" level="DEBUG"/> 
    </Logger> 

</Loggers> 

PS。

15:05:08,007 ERROR [stderr] (ServerService Thread Pool -- 111) SLF4J: Class path contains multiple SLF4J bindings. 
15:05:08,007 ERROR [stderr] (ServerService Thread Pool -- 111) SLF4J: Found binding in [vfs:/content/admin-1.0-SNAPSHOT-dev.war/WEB-INF/lib/slf4j-jdk14-1.7.5.jar/org/slf4j/impl/StaticLoggerBinder.class] 

15:05:08,008 ERROR [stderr] (ServerService Thread Pool -- 111) SLF4J: Found binding in [vfs:/content/admin-1.0-SNAPSHOT-dev.war/WEB-INF/lib/log4j-slf4j-impl-2.5.jar/org/slf4j/impl/StaticLoggerBinder.class] 

15:05:08,008 ERROR [stderr] (ServerService Thread Pool -- 111) SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

15:05:08,009 ERROR [stderr] (ServerService Thread Pool -- 111) SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory] 

ものがある - - 私のserver.logで、私はこれを見ることができますファイルが作成され、それが空です。 アイデア

ありがとうございます。

答えて

1

依存関係間の競合を解決する必要があります。あなたはmvn dependency:treeを使って依存関係を特定し、それらを削除または除外することができます。

サーバログより:StaticLoggerBinder.classがlog4j-slf4jとslf4j-jdk14からロードされており、競合しています。したがって、slf4j-jdk14ライブラリを除外して試してみることができます。さらに約multiple binding

<exclusions> 
    <exclusion> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-jdk14</artifactId> 
    </exclusion> 
</exclusions> 
+0

大変感謝! mvn依存関係:木は問題のアーティファクトを示しました! – RedCollarPanda

関連する問題