【问题标题】:Tomcat 8 log4j wicket 7 configurationTomcat 8 log4j wicket 7 配置
【发布时间】: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>

一切看起来都很好,但是输出忽略了这个配置。

  1. 我的aleron.log 文件已创建但保持为空。
  2. 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已经发布,所以应该不需要使用里程碑......
  • 我暂时推迟了它,因为它会使单元测试失败,但我会尽快完成。我也相信这不是问题。

标签: java tomcat log4j wicket


【解决方案1】:

我遇到了同样的问题,就我而言,这是因为 logback 库(logback-classic.jar 和 logback-core.jar)潜入了我的传递依赖项,并且显然覆盖了 log4j.jar

【讨论】:

    【解决方案2】:

    您是否尝试使用以下环境加载配置:

    导出 TOMCAT_OPTS="-Dlog4j.debug -Dlog4j.configuration=config.xml"

    查看此页面了解更多信息: http://logging.apache.org/log4j/1.2/manual.html

    【讨论】:

      猜你喜欢
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      相关资源
      最近更新 更多