web-dev-qa-db-ja.com

Apacheコモンズロギングのロギングレベルを調整しますか?

ApacheのPDFBoxライブラリを使用するシンプルなコンソールアプリがあります。このライブラリは、コモンズログを使用します。コンソールに抑制したいジャンクメッセージがたくさん表示されます。

2011年2月15日3:56:40 PM org.Apache.pdfbox.util.PDFStreamEngine processOperator INFO:サポートされていない/無効な操作:EI

私のコードでは、ログレベルを無駄にリセットしようとしました:

Logger.getLogger("org.Apache.pdfbox.util.PDFStreamEngine").setLevel(Level.OFF);
Logger.getLogger("org.Apache.pdfbox.util").setLevel(Level.OFF);
Logger.getLogger("org.Apache.pdfbox").setLevel(Level.OFF);

これらの設定にもかかわらず、メッセージは引き続きコンソールに表示されます。 Commonsロギングからログオブジェクトを取得しても、レベルを設定する方法がないように見えるため、役に立ちません。

これらのメッセージをプログラムで抑制する方法はありますか?または、構成ファイルを追加する必要がありますか?

21
user364902

Commons-loggingは、logging-facadeにすぎません。つまり、実際にログデータをディスクなどに書き込むコードは提供されません。変更する必要があるのは、実際のロギング実装の構成です(logbacklog4jsl4fjなど)。そのようなライブラリが見つからない場合、デフォルトでJava.util.loggingになります。

たとえば、クラスパスに log4j を配置し、クラスパスに log4j.xml 構成ファイルを追加することをお勧めします。この場合、クラスパスにlog4jが存在するだけで、初期化できます。 Log4jも構成できます プログラムで

6
Johan Sjöberg

Apache commons-loggingによってどのLogging実装が使用されているかを把握する時間がない場合は、クラスパスにあるすべてのものを無効にしてみてください。次のコードは、3つの実装をテストします。

いずれかの行がコンパイルされない場合は、依存関係を追加しないでください。行を削除するだけです。

String[] loggers = { "org.Apache.pdfbox.util.PDFStreamEngine",
    "org.Apache.pdfbox.pdmodel.font.PDSimpleFont", "httpclient.wire.header" , "httpclient.wire.content"
for (String ln : names) {
  // Try Java.util.logging as backend
  Java.util.logging.Logger.getLogger(ln).setLevel(Java.util.logging.Level.WARNING);

  // Try Log4J as backend
  org.Apache.log4j.Logger.getLogger(ln).setLevel(org.Apache.log4j.Level.WARN);

  // Try another backend
  Log4JLoggerFactory.getInstance().getLogger(ln).setLevel(Java.util.logging.Level.WARNING);
 }
2
alfonx

Apache commons-loggingは、その下にある他のロギングフレームワークを使用します(Java.util.loggingまたはLog4J)、プロジェクトでどちらを使用しているかを調査し、そこで適切なログレベルを設定する必要があります。

2

これは私のために働きます:

String[] loggers = { "org.Apache.pdfbox.util.PDFStreamEngine",
        "org.Apache.pdfbox.pdmodel.font.PDSimpleFont" };
for (String logger : loggers) {
  org.Apache.log4j.Logger logpdfengine = org.Apache.log4j.Logger
         .getLogger(logger);
  logpdfengine.setLevel(org.Apache.log4j.Level.OFF);
}
2
Wolfgang Fahl