这是我的环境
我创建了一个maven项目
我编写了以下路线
@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文件中没有配置我的appender。所有内容都记录在Wildfly 12服务器的server.log下。
在Wildfly Camel documentation中,我找不到任何对日志记录的引用。 Wildfly 12 administration guide, Logging Configuration讨论了一个名为 use-deployment-logging-config 的参数,该参数包含在配置xml(standalone-camel-full.xml)的日志子系统部分中
来自文档
使用部署测井-配置
use-deployment-logging-config 控制是否针对每个部署扫描部署 日志记录。如果设置为true,则默认的每部署日志记录为 启用。设置为false以禁用此功能。
9.4.2。按部署日志记录
按部署日志记录允许您将日志记录配置文件添加到部署并进行日志记录 根据配置文件配置的部署。在 一个EAR,配置应该在META-INF目录中。在一场战争中 或JAR部署配置文件可以在META-INF中 或WEB-INF / classes目录。
允许使用以下配置文件:
logging.properties
jboss-logging.properties
log4j.properties
的log4j.xml
的JBoss-的log4j.xml
您也可以通过更改来禁用此功能 use-deployment-logging-config属性为false。
我已经将log4文件的名称从log4j2.xml测试到了log4j.xml,但它仍未加载。
我还在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>
我的文件未加载的任何想法?