Web applications 如何在Tomcat8中为web应用程序配置log4j2?

Web applications 如何在Tomcat8中为web应用程序配置log4j2?,web-applications,log4j2,tomcat8,Web Applications,Log4j2,Tomcat8,我正在Tomcat8.0.24上部署一个web服务作为web应用(war)。应用程序jar已经过测试,可以正常工作。现在为了配置和测试log4j,我引发了一个运行时错误(没有连接数据库) 我试图只为应用程序日志设置log4j2(而不是tomcat),并使用Netbeans 8.0.2构建war 我在类路径中包含了以下JAR: log4j-api-2.8.jar log4j-core-2.8.jar log4j-web-2.8.jar log4j-jcl-2.8.jar commons-lo

我正在Tomcat8.0.24上部署一个web服务作为web应用(war)。应用程序jar已经过测试,可以正常工作。现在为了配置和测试log4j,我引发了一个运行时错误(没有连接数据库)

我试图只为应用程序日志设置log4j2(而不是tomcat),并使用Netbeans 8.0.2构建war

我在类路径中包含了以下JAR:

log4j-api-2.8.jar
log4j-core-2.8.jar
log4j-web-2.8.jar
log4j-jcl-2.8.jar   
commons-logging.jar 
和WEB-INF中的log4j2.xml,只有根记录器配置为捕获来自WEB app的所有内容:


C:\logs\Myapp.log
%d{HH:mm:ss.SSS}-%-5级别%logger-%msg%n
%d%p%logger-%C-%m%n
我还配置了catalina.properties,以防万一,以覆盖默认的jarsToSkip:

tomcat.util.scan.StandardJarScanFilter.jarsToScan=log4j-core*.jar,log4j-taglib*.jar,log4j-api*.jar,log4j-web*.jar,log4j-jcl*.jar`
由于status=“TRACE”,我认为log4j已正确初始化为catalina*.log states:

也因为创建了日志文件

然而,来自应用程序(web服务jar)的所有运行时错误消息都以catalina*.log结尾,而不是我配置的文件appender。此外,catalina*.log中的错误消息没有遵循Appenders定义中定义的任何模式,因此基本上看起来log4j2被忽略了


我做错了什么

在log4j的文档中,我发现在组件下有一个log4j1.2api,它声明“允许编码为使用log4j1.2api的应用程序使用log4j2。”

我发现应用程序的JAR是使用以前版本的log4j开发的。所以我包括了log4j-1.2-api-2.8.jar,并删除了log4j-jcl-2.8.jar和 commons-logging.jar就是这样。现在,应用程序的日志消息被发送到配置为appender的文件中

也许值得一提的是,添加log4j-1.2-api-2.8.jar后的第一个测试不起作用,所以我想这与我后来删除的jar有点冲突

2017-02-08 14:06:52,355 http-nio-8080-exec-8 DEBUG Log4jServletContextListener ensuring that Log4j starts up properly.
2017-02-08 14:06:52,357 http-nio-8080-exec-8 DEBUG Log4jServletFilter initialized.