2

私は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

このクラスのログ出力を抑制する他の方法はありますか?

4

2 に答える 2

2

org.apache.catalina.core.ApplicationContextApplicationContextで使用されるロガーの名前ではなく、コンポジットのログを使用します: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のロギング機能を使用したことがなく、見つける情報があまりありません。

于 2010-06-23T13:22:46.630 に答える
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 に答える