web-dev-qa-db-ja.com

SFL4JとJDKのロギング間で異なるロギングレベル

ロギングフレームワークとしてJDKロギングを使用し、シンプルなファサードとしてSLF4Jを使用しています。異なるレベルのログをログに記録するときに、いくつかのクエリがあります。

SLF4Jには次のログレベルがあります

trace (the least serious)<br>
debug<br>
info<br>
warn<br>
error<br>
fatal (the most serious)<br>

JDKロギングには次のログレベルがあります

SEVERE (highest value)<br>
WARNING<br>
INFO<br>
CONFIG<br>
FINE<br>
FINER<br>
FINEST (lowest value)<br>

ログレベルをDEBUGに設定したい場合、そのレベルはJDKロギングでは使用できません。この状況でDEBUGレベルのログを取得する方法を誰かに説明してもらえますか。この状況のた​​めに追加の構成を行う必要がありますか?

更新

これは私のプロパティファイルの構成です

handlers = com.amc.logging.handlers.DebugLogHandler

com.amc.logging.handlers.DebugLogHandler.pattern=c:/logs/debug_log.log
com.amc.logging.handlers.DebugLogHandler.level=FINE
com.amc.logging.handlers.DebugLogHandler.formatter=Java.util.logging.SimpleFormatter
com.amc.logging.handlers.DebugLogHandler.append=true

どこが間違っていたのか教えてください。

15
Java-Seekar

私は以下の投稿の助けを借りてこの問題を解決しました。

jdkを使用したslf4jロギング–デバッグを有効にする方法

SLF4JでのDEBUGレベルのロギングでは、Java.util.loggingでFINEレベルをマップする必要があります。

また、デフォルトのログレベルをFINE以下のレベルに設定する必要があります。これは、以下の行をログ構成ファイルに入れることで実現できます。

.level = FINE

8
Java-Seekar

もう1つの問題は、ハンドラーを定義したにもかかわらず、それをロガーに割り当てていないことです。

ルートロガーに割り当てるには、

.handlers=com.amc.logging.handlers.DebugLogHandler

アプリケーションのロガーに割り当てるには、ロガーを定義します

com.company.application.package.level=FINE

そして、それにハンドラーを割り当てます:com.company.application.package.handlers=com.amc.logging.handlers.DebugLogHandler

また、com.amc.logging.handlers.DebugLogHandlerは、自分で定義したクラスですか?それはあなたのクラスパスにありますか?そうでなければ、Java.util.logging(JUL)がそれを認識しないと思います。

JULに付属しているハンドラーの1つを試してください。

handlers=Java.util.logging.FileHandler, Java.util.logging.ConsoleHandler

そして、必要なレベル、ログの場所、形式でそれらを構成します。

以下にlogging.propertiesファイルの例を示します。 https://Tomcat.Apache.org/Tomcat-6.0-doc/logging.html#Using_Java.util.logging_(default)

Apacheのjuli実装のハンドラーを使用しますが、JULのクラスに置き換えるだけです: https://docs.Oracle.com/javase/7/docs/api/Java/util/logging/package-summary.html

0
Jibby