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>

当我将生成的战争部署到使用 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管理指南,日志配置讨论了一个名为use-deployment-logging-config的参数,该参数将包含在配置 xml (standalone-camel-full.xml) 的日志子系统部分中

从文档

使用部署日志配置

use-deployment-logging-config 控制是否扫描您的部署以获取每个部署的日志记录。如果设置为 true,则启用默认的按部署日志记录。设置为 false 以禁用此功能。

9.4.2. 每次部署日志

每次部署日志记录允许您将日志记录配置文件添加到部署中,并根据配置文件配置该部署的日志记录。在 EAR 中,配置应该在 META-INF 目录中。在 WAR 或 JAR 部署中,配置文件可以位于 META-INF 或 WEB-INF/classes 目录中。

允许使用以下配置文件:

日志记录属性

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