0

これが私の環境です

  • Wildfly 12.0.0.Final
  • WildFly-Camel 6.1.0 (WildFly-Camel 6.1.0 は、Camel-2.21.1 と WildFly-12.0.0 の統合を提供します)
  • Oracle jdk 1.8.0_112 64 ビット

Mavenプロジェクトを作成しました

  • グループ ID : org.wildfly.camel.archetypes
  • アーティファクト ID : wildfly-camel-archetype-cdi
  • バージョン: 6.1.0

次のルートをコーディングしました

@ApplicationScoped
@ContextName("camel-cdi-context")
public class RouteTestLog extends RouteBuilder{

    private static final Logger miLog = LoggerFactory.getLogger("testLogger");

    @Override
    public void configure() throws Exception {

        Supplier<LocalDateTime> now = LocalDateTime::now;

        from("timer:simple?period=1000") // every second            
            .setBody( now ) // I set the body as the current LocalDateTime
            .log(LoggingLevel.ERROR, miLog, "This is a message ${body}") //     I log it using the log component
            .process(new Processor() {              
                @Override
                public void process(Exchange exchange) throws Exception {
                    miLog.error("This is a message inside a processor " +     exchange.getIn().getBody(LocalDateTime.class));
                }
            })
            .process().body( System.out::println ); // I log it in the     standard output for debug my test :S
    }//configure
}//RouteTestLog

また、次の log4j2 xml 構成ファイルも作成しました。src/main/resources ディレクトリ下に配置されます。ターゲット WAR では、ファイルはWEB-INF\classes\log4j2.xmlにあります。

<?xml version="1.0" encoding="UTF-8" ?>
 <configuration status="debug">
    <appenders>     
        <file name="testAppender" fileName="logs/test.log" append="false"/>
        <file name="rootApender"  fileName="logs/root.log" append="false"/>
    </appenders>
    <loggers>       
        <Logger name="testLogger" level="all" additivity="false">
            <AppenderRef ref="testAppender"/>
        </Logger>       
        <Root level="all">
            <AppenderRef ref="rootApender" />
        </Root>
    </loggers>
</configuration>

生成された war を、Wildfy-camel サブシステムでパッチを適用した Wildfly 12 サーバーにデプロイすると。私は、standalone-camel-full.xml構成ファイルを変更せずに使用します。server.log で次の行を確認できます。

2018-06-11 14:47:38,492 ERROR [testLogger] (Camel (camel-cdi-context) thread #1 - timer://simple) This is a message 2018-06-11T14:47:38.489
2018-06-11 14:47:38,497 ERROR [testLogger] (Camel (camel-cdi-context) thread #1 - timer://simple) This is a message inside a processor 2018-06-11T14:47:38.489
2018-06-11 14:47:38,499 INFO  [stdout] (Camel (camel-cdi-context) thread #1 - timer://simple) 2018-06-11T14:47:38.489

まさに私が記録したいものです。しかし、log4j ファイルで構成されたアペンダーは作成されません。すべてが Wildfly 12 サーバーの server.log に記録されます。

Wildfly Camel のドキュメントでは、ログへの参照が見つかりません。Wildfly 12管理ガイドの Logging Configuration では、構成 xml (standalone-camel-full.xml) の logging サブシステム セクションに含まれるuse-deployment-logging-configというパラメーターについて説明しています。

ドキュメントから

展開ログ構成を使用

use-deployment-logging-config は、デプロイメントごとのロギングのためにデプロイメントをスキャンするかどうかを制御します。true に設定すると、デフォルトのデプロイメントごとのロギングが有効になります。この機能を無効にするには、false に設定します。

9.4.2. デプロイメントごとのロギング

デプロイメントごとのロギングを使用すると、デプロイメントにロギング構成ファイルを追加し、構成ファイルに従ってそのデプロイメントのロギングを構成できます。EAR では、構成は META-INF ディレクトリにある必要があります。WAR または JAR デプロイメントでは、構成ファイルは META-INF または WEB-INF/classes ディレクトリのいずれかに置くことができます。

次の構成ファイルが許可されています。

logging.properties

jboss-logging.properties

log4j.properties

log4j.xml

jboss-log4j.xml

use-deployment-logging-config 属性を false に変更して、この機能を無効にすることもできます。

log4j2.xml から log4j.xml までの log4 ファイルの名前をテストしましたが、まだロードされていません。

また、standalone-camel-full.xml ファイルで use-deployment-logging-config プロパティを設定しました。ドキュメントに記載されていても、デフォルトは true です。再び同じ結果。ログ ファイルが作成されません。

ファイル内で構文エラーが発生したかのように、ファイルが読み込まれていないと思います。そのエラーは、展開またはサーバーの起動中に表示されることはありません。

これは、依存関係が欠落している場合に備えて、Eclipse IDE からの有効な pom.xml でもあります。

  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jul-to-slf4j</artifactId>
    <version>1.7.25</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>1.7.25</version>
  </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.9.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.9.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.9.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.9.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jcl</artifactId>
    <version>2.9.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jul</artifactId>
    <version>2.9.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-web</artifactId>
    <version>2.9.1</version>
  </dependency>

ファイルがロードされない理由はありますか?

4

0 に答える 0