2010-06-08 76 views
2

我使用Tomcat 6,这是我的logging.properties:的Tomcat6忽略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 

是否有任何其他方式来抑制此类的日志输出?

回答

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找到

+0

我改变了行 org.apache.catalina.core.StandardContext.level = OFF 但它像以前一样仍然具有相同的日志输出。 – Bob 2010-06-24 14:39:40

+0

设置org.apache.catalina.core.ContainerBase.level = OFF取得了诀窍。谢谢! – Bob 2010-06-29 23:25:40

+0

没问题,谢谢2 kschneid了 – Redlab 2010-06-30 14:17:59

2

我认为Redlab在正确的轨道上 - 注意记录器名称的根目录是org.apache.catalina.core.ContainerBase,而不是org.apache.catalina.core.StandardContext。方法org.apache.catalina.core.ContainerBase.logName()控制记录器名称,并明确以ContainerBase.class.getName()开头。只是为了澄清,StandardContext延伸ContainerBase