« 一括自動ダンプ | 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 23:36

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

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

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

    Posted by: syo | 2007.03.08 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


    Listed below are links to weblogs that reference Log4j:

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