2

我正在使用 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

有没有其他方法可以抑制这个类的日志输出?

4

2 回答 2

2

我认为Redlab在正确的轨道上 - 请注意记录器名称的根是org.apache.catalina.core.ContainerBase,不是org.apache.catalina.core.StandardContext。该方法org.apache.catalina.core.ContainerBase.logName()控制记录器名称,它明确地以ContainerBase.class.getName(). 只是为了澄清,StandardContext扩展ContainerBase.

于 2010-06-28T18:34:06.023 回答
2

org.apache.catalina.core.ApplicationContext不是 ApplicationContext 中使用的记录器的名称,它使用复合的日志:org.apache.catalina.core.StandardContext的日志。

--edit:也许是因为它们是上下文记录器。然后他们需要进行不同的配置

就像是

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \ 

我以前没有这样做过,我从来没有使用过tomcat的日志记录工具,也没有太多信息可以找到

于 2010-06-23T13:22:46.630 回答