Tomcat 6 Log4j配置 - stdout仍在写入?

时间:2011-03-04 08:30:52

标签: java log4j tomcat6

我已按照指示配置tomcat 6以使用log4j从此处进行记录:Logging in Tomcat

但是,我注意到线程似乎正在记录到stdout,而不考虑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-INF /类下的webapp中部署了一个类似的log4j.properties文件,它具有类似的属性(但是记录到不同的文件)。为什么日志语句不遵循我定义的转换模式,也不遵循我设置的日志级别限制?

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

安德鲁

1 个答案:

答案 0 :(得分:0)

这里的主要问题是您使用的是旧属性文件样式的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