【问题标题】:Tomcat 6 Log4j Configuration - stdout still being written to?Tomcat 6 Log4j 配置 - 仍在写入标准输出?
【发布时间】:2011-03-04 08:30:52
【问题描述】:

我已按照说明从此处配置 tomcat 6 以使用 log4j 进行日志记录:Logging in Tomcat

但是,我注意到线程似乎正在记录到标准输出,而与 log4j.properties 中设置的日志级别无关。这是我的 log4j.properties 文件:

    log4j.rootLogger=WARN, CATALINA
    # Define all the appenders
    log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.CATALINA.file=${catalina.base}/logs/tomcat.out
    log4j.appender.CATALINA.encoding=UTF-8
    # Roll-over the log once per day
    log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'
    log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
    log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
    log4j.appender.CATALINA.append=true

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.encoding=UTF-8
    log4j.appender.CONSOLE.conversionPattern = %d [%t] %-5p %c- %m%n

    # Configure which loggers log to which appenders
    #log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
    #log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=INFO, MANAGER
    #log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=INFO, HOST-MANAGER

    log4j.logger.org.hibernate.hql.ast=ERROR

这是我的 ${CATALINA_BASE}/lib 目录中的文件。请注意我将 org.hibernate.hql.ast 级别设置为 ERROR 的最后一行。以下内容不断涌入我的 tomcat.out 日志:

15663118 [http-8080-1] WARN org.hibernate.hql.ast.QueryTranslatorImpl - firstResult/maxResults specified with collection fetch; applying in memory!
15663531 [TP-Processor7] WARN org.hibernate.hql.ast.QueryTranslatorImpl - firstResult/maxResults specified with collection fetch; applying in memor
62100 [http-8080-18] INFO org.hibernate.cache.StandardQueryCache - starting query cache at region: video

我在我的 web 应用程序中部署了一个类似的 log4j.properties 文件,该文件位于 WEB-INF/classes 下,具有类似的属性(但记录到不同的文件)。为什么日志语句不遵循我定义的转换模式,也不遵循我设置的日志级别限制?

我在 SunOS 5.10 amd64 上运行 tomcat 6.0.30、Java 1.6.0_23 和 log4j 1.2.16。我的应用程序日志的输出按预期工作。提前感谢您的帮助。

安德鲁

【问题讨论】:

    标签: java log4j tomcat6


    【解决方案1】:

    这里的主要问题是您正在使用旧的属性文件风格的方式来配置 Log4J。因为现在大多数人都使用 XML 配置方法,所以你很难找到能回答这个问题的人。

    但是,您需要为每个 appender 设置阈值。这就是它在 XML 中的实现方式:

       <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
       ...
          <param name="Target" value="System.out"/>
          <param name="Threshold" value="WARN"/>
    
       ...
       </appender>
    

    它可能看起来像他的平面文件:

    log4j.appender.Console.Threshold=WARN
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多