我已按照指示配置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。我的应用程序日志的输出按预期工作。在此先感谢您的帮助。
安德鲁
答案 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