« 一括自動ダンプ | Main | Randomのランダム具合 »

2007.02.27

Log4j

 Log4jでこんなことできないかと試行錯誤中・・・。

  • rootLoggerはコンソールとファイルAに出力する
  • あるパッケージは、ファイルAへの出力は行わず、コンソールとファイルBに出力する(ロガーB)

     すべてのロガーの祖先としてrootLoggerがあり、それを継承してしまうためファイルAに出力したくないような場合でも、自動的にファイルAに出力されてしまいます。
     ロガーBで、Appenderを除去しようとしてみたのですが、名前が完全一致していないとそもそもAppenderのリスト自体に上がってこないようで。

    for (Appender app : Collections.<Appender>list(logger.getAllAppenders()) ) {
     System.out.println(app.getName());
    }
    ってやっても、rootLoggerでセットしたAppender情報はロガーBにおいては何も取得できず。

     rootLoggerを何も出力しないようにして、それ以外のパッケージ等をすべて指定するという感じで設定するしかないんですかね?

  • |

    « 一括自動ダンプ | Main | Randomのランダム具合 »

    Java」カテゴリの記事

    Comments

    additivityをloggerに設定すればできます。









    Posted by: nekop | 2007.03.07 at 23:36

    おぉ、なるほど。ありがとうございます。例えば、

    log4j.rootLogger=info, Console
    log4j.logger.test=debug, File
    log4j.additivity.test=false
    (以下略)

    ってな感じでセットすれば、testパッケージ以下はコンソールには出力されずにファイルにのみ出力される(それ以外のパッケージはコンソールに出力される)ようになるんですね。

    Posted by: syo | 2007.03.08 at 17:23

    Post a comment



    (Not displayed with comment.)


    Comments are moderated, and will not appear on this weblog until the author has approved them.



    TrackBack

    TrackBack URL for this entry:
    http://app.cocolog-nifty.com/t/trackback/3959/14064255

    Listed below are links to weblogs that reference Log4j:

    « 一括自動ダンプ | Main | Randomのランダム具合 »