- PR -

Log4Jの出力レベル設定について

1
投稿者投稿内容
たー坊
会議室デビュー日: 2005/01/12
投稿数: 4
投稿日時: 2005-12-14 14:32
現在構築中のアプリケーションでLog4Jを使用しているのですが、
Log4Jの設定についてはlog4j.xmlに定義していて、基本それを読み込むことになっているのですが、アプリケーション起動時、もしくはアプリケーション稼動中にプログラム内からログの出力レベルのみを動的に切り替えられないものかと考えています。

Log4jのDOMConfiguratorを使って、たとえばINFO用、DEBUG用と2つのxml定義を切り替えるっていう方法もあるのですが、設定ファイルはひとつで出力レベルのみ切り替えることが出来ないものかなぁと悩んでいます。

何方かご存知の方が居りましたら、ご教示お願い致します。
Jun
大ベテラン
会議室デビュー日: 2003/08/25
投稿数: 141
投稿日時: 2005-12-15 16:30
私はjava初心者なのであまりあてにはならないですが
私なりに考えた方法としてふたつあると思います(実際出来るかどうかわかりません.
いずれも起動時に指定する方法です.実行中変更するのも基本的に1と同じと思います.

1.ソース上でプロパティの値らによりログレベルを変えるように(たぶん専用のクラスを
作ると思う)作っておいて起動時にプロパティの値を変えることによりログレベルを
変える
2.1だとソースレベルで考慮しなければならないので,agentを作りクラスのロード時に
Loggerのログ出力メソッド呼び出しの部分をバイトコードレベルで変更する
(これは私も勉強を始めたばかりなのでとても具体的な説明は無理です.
このMLの他の人に説明してもらってください)
Jun
大ベテラン
会議室デビュー日: 2003/08/25
投稿数: 141
投稿日時: 2005-12-15 16:41
蛇足ですがlog4jの設定ファイルってまさにログ設定を変えるためにあるんですよね
それを変更するのが本来と思うのですがわざわざ固定でなければいけない
というのには何か事情があるのでしょうね
悶吉
会議室デビュー日: 2004/03/30
投稿数: 14
投稿日時: 2005-12-16 14:40
BEAさんが↓のページで公開しているLog4j管理JSPなんか参考になるかと。
http://www.beasys.co.jp/dev2dev/resourcelibrary/utilitiestools/adminmgmt.html
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-12-18 01:12
引用:

たー坊さんの書き込み (2005-12-14 14:32) より:
現在構築中のアプリケーションでLog4Jを使用しているのですが、
Log4Jの設定についてはlog4j.xmlに定義していて、基本それを読み込むことになっているのですが、アプリケーション起動時、もしくはアプリケーション稼動中にプログラム内からログの出力レベルのみを動的に切り替えられないものかと考えています。


普通にメソッド呼んで変えられたような気がしますが。
っていうか、log4jのたとえば設定ファイルって、基本的には設定の実施をファイルの情報を元に行うってだけでなかったですかね(だからプログラムで変える方がむしろダイレクトというか)?
※記憶で言ってますので間違ってたらすみません。
およよ
会議室デビュー日: 2004/04/03
投稿数: 9
投稿日時: 2005-12-18 20:39
ご返信くださった皆様、書込みが遅くなってしまい申し訳ありませんでした。
皆様の意見を参考に色々と検討致しました。
特に悶吉さんに教えて頂いたBEAさんのJSPを拝見したのですが、今回、動的にログレベルを設定する箇所は
Logger rootLogger = LogManager.getRootLogger();
rootLogger.setLevel(Level.DEBUG);
とすることで問題なくいけそうな感じです。
教えて頂くと、なるほどぉという感じですが、研究不足で申し訳ありませんという気持ちです。
皆様、ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)