0

ロガーに組み込まれているjdk上でslf4jロギングファサードを使用しています。SLF4JのConsoleHandlerを使用してロギングレベルを設定する方法がわかりません。

public Class foo(){
   Logger log = Logger.getLogger(foo.class()) //logger from SLF
   public void run(){
       log.info("info")
    }
   private static void main(String[] args){
     ConsoleHandler con = new ConsoleHandeler(); //from java.util.logging
     con.setLevel(Level.OFF)
     run()
    }
   }


  >INFO: info

情報をオフにすべきではありませんか?ユーザーにコマンドラインインターフェイスから必要なログのレベルを入力してもらいたいので、ログプロパティファイルを設定したくありませんでした。私はコンソールの追加だけを気にします。これはこれに似ていますか:java.util.loggingを使用してコンソールにログオンします

4

1 に答える 1

1

SLF4J とロギング実装を混在させないでください。SLF4J の考え方は、jar と構成ファイルを置き換えるだけでロガーの実装を切り替えることができるということです。あなたのコードでは、ロギングの実装 (lkog4j、util logging など) への参照はありません。SLF4J はロギング ファサードであるため、ログ レベルとログに記録される内容のみを制御できます。ハンドラーなどはロギング実装の一部です。
ログを記録する場所、ログするレベルなどの決定はユーザーに任せる必要があります。

それとは別に; util logger でのコンソール ロギングを無効にします。行う

ルートロガーLogger logger = Logger.getLogger("");
を取得し、そのすべてのハンドラーlogger.getHandlers();
を反復して取得し、そのハンドラーのいずれかがinstanceof ConsoleHandler
レベルに設定されているかどうかを確認しますcon.setLevel(Level.OFF)

メソッドでは、main新しい ConsoleHandler を作成しました。どのロガーにも関連付けられていないため、何も起こりません。

于 2013-03-07T12:17:32.330 に答える