我正在使用Tomcat 6,这是我的logging.properties:
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.level=FINE
org.apache.catalina.core.ApplicationContext.level = OFF
org.apache.juli.FileHandler.level = ALL
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = mylog.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
一方面,Tomcat似乎读取了这个文件,因为它正确地保存了带有前缀“mylog”的日志文件,并且只打印了日志级别为FINE
及以上的邮件。另一方面,它继续写这样的日志消息:
Jun 8, 2010 9:53:30 PM org.apache.catalina.core.ApplicationContext log
SEVERE: Error writing messages
ClientAbortException: java.net.SocketException: Broken pipe
我实际上想要禁止来自此类的所有日志消息,因为它们充斥了我的日志文件,并且错误对我来说无关紧要。那么为什么忽略以下行呢?
org.apache.catalina.core.ApplicationContext.level = OFF
是否有其他方法可以抑制此类的日志输出?
答案 0 :(得分:2)
org.apache.catalina.core.ApplicationContext
不是ApplicationContext中使用的记录器的名称,它使用复合的日志:org.apache.catalina.core.StandardContext
的日志。
- 编辑: 也许是因为它们是上下文记录器。然后他们需要以不同的方式配置
类似
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \
我之前没有这样做过,我从未使用过tomcat的日志工具,而且找不到info
答案 1 :(得分:2)
我认为Redlab在正确的轨道上 - 请注意记录器名称的根目录是org.apache.catalina.core.ContainerBase
,而不是org.apache.catalina.core.StandardContext
。方法org.apache.catalina.core.ContainerBase.logName()
控制记录器名称,它明确地以ContainerBase.class.getName()
开头。只是为了澄清,StandardContext
延伸ContainerBase
。