【发布时间】:2016-01-09 06:43:26
【问题描述】:
我在为我的 wicket 7 应用程序配置 tomcat 8 日志记录时遇到了一些问题。
根据 mykong 的示例,我设置了我的应用程序的 pom 并添加了 log4.j 属性文件:
http://www.mkyong.com/wicket/wicket-log4j-integration-example/
我的 log4j.properties 文件:
log4j.rootLogger=INFO, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.logger.com.ds=INFO
log4j.logger.org.springframework=WARN
log4j.logger.org.hibernate=WARN
log4j.logger.org.eclipse.jetty=INFO
# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/aleron.log
log4j.appender.file.MaxFileSize=5KB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
根据此文档,我确保该 jar 存在于 lib 目录中:
https://tomcat.apache.org/tomcat-8.0-doc/logging.html
我已根据此 SO 页面将以下内容添加到 CATALINA_OPTS:
Where should I put the log4j.properties file?
我检查了日志,似乎正在加载属性文件:
og4j: Trying to find [log4j.xml] using context classloader WebappClassLoader
context: deathstar
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@3b07d329
.
log4j: Trying to find [log4j.xml] using WebappClassLoader
context: deathstar
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@3b07d329
class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader WebappClassLoader
context: deathstar
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@3b07d329
.
log4j: Using URL [file:/opt/apache-tomcat-8.0.24/webapps/deathstar/WEB-INF/classes/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:/opt/apache-tomcat-8.0.24/webapps/deathstar/WEB-INF/classes/log4j.properties
log4j: Parsing for [root] with value=[INFO, stdout, file].
log4j: Level token is [INFO].
log4j: Category root set to INFO
log4j: Parsing appender named "stdout".
log4j: Parsing layout options for "stdout".
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].
log4j: End of parsing for "stdout".
log4j: Setting property [target] to [System.out].
log4j: Parsed "stdout" options.
log4j: Parsing appender named "file".
log4j: Parsing layout options for "file".
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].
log4j: End of parsing for "file".
log4j: Setting property [file] to [/opt/apache-tomcat-8.0.24/logs/aleron.log].
log4j: Setting property [maxBackupIndex] to [5].
log4j: Setting property [maxFileSize] to [5KB].
log4j: setFile called: /opt/apache-tomcat-8.0.24/logs/aleron.log, true
log4j: setFile ended
log4j: Parsed "file" options.
log4j: Parsing for [com.ds] with value=[INFO].
log4j: Level token is [INFO].
log4j: Category com.ds set to INFO
log4j: Handling log4j.additivity.com.ds=[null]
log4j: Parsing for [org.springframework] with value=[WARN].
log4j: Level token is [WARN].
log4j: Category org.springframework set to WARN
log4j: Handling log4j.additivity.org.springframework=[null]
log4j: Parsing for [org.eclipse.jetty] with value=[INFO].
log4j: Level token is [INFO].
log4j: Category org.eclipse.jetty set to INFO
log4j: Handling log4j.additivity.org.eclipse.jetty=[null]
log4j: Parsing for [org.hibernate] with value=[WARN].
log4j: Level token is [WARN].
log4j: Category org.hibernate set to WARN
log4j: Handling log4j.additivity.org.hibernate=[null]
log4j: Finished configuring.
根据我在控制台中看到的建议,我必须在我的 webapps pom 中添加以下排除项才能使其正常工作:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.1.8.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
一切看起来都很好,但是输出忽略了这个配置。
- 我的aleron.log 文件已创建但保持为空。
- catalina.out 不受任何这些配置的影响,并且充满了调试信息。
注意,这只是我在 Tomcat 上运行此配置时出现的问题,本地 log4j 属性文件已加载并在 IntelliJ 中正常工作。
使用过的版本:
Tomcat:8.0.24 检票口:7.0.0-M5 爪哇:1.7 slf4j-log4j12:1.6.1
我的目标是使用配置到 Tomcat 8 的日志级别配置,并使用 aleron.log 作为输出。我可能遗漏了一些简单的东西。
有什么建议吗?提前致谢。
【问题讨论】:
-
我相当肯定这与它无关,但Wicket 7已经发布,所以应该不需要使用里程碑......
-
我暂时推迟了它,因为它会使单元测试失败,但我会尽快完成。我也相信这不是问题。