0

Java Web アプリケーションをデプロイするサーバーに応じて、さまざまなレベルでログを記録できるようにしたいと考えています。たとえば、テスト サーバーでは DEBUG レベルでログを記録し、運用サーバーでは WARN レベルでログを記録したいと考えています。現在、log4.xml ファイルは WAR ファイル内にあります。Tomcat コンテキスト パラメーターを使用して、Web アプリのログ レベルを構成できるようにしたいと考えています。これは可能ですか?

環境変数とシステム プロパティを使用できることがわかりました。たとえば、${catalina.home}は解釈されます。これと同じ機能を Tomcat コンテキストのパラメータ値に代用できますか?

たとえば、log4j.xml スニペットは次のようになります。

<level value="${log.level}" 

log.levelは %TOMCAT_HOME%/conf/context.xml で定義されています。

<Parameter name="log.level" value="DEBUG" />

上記を試してみましたが、うまくいかないようです。Google は、log4j 構成ファイルでのコンテキスト パラメーターの使用に関連する情報を私に提供していません。この SO の質問は、システム プロパティを使用して同様のことを行っていることがわかりましたが、Tomcat コンテキスト パラメータを使用していないため、私が望むものとはまったく異なります。log4j構成でコンテキストパラメータ値置換機能を利用できますか? 外部の log4j.xml ファイルを使用するなど、他のオプションを検討する必要がありますか?

4

2 に答える 2

1

Log4Jがこれをネイティブに行うとは思いません。Spring Web Framework には、web.xml を介して構成されたリスナーが付属していたことを思い出します。これは、少し似たようなことを行う可能性があります。あなたが本当にしたいのなら、そのコードを手に入れて、それを使ってあなたが本当に欲しいものを作ることができると思います。

于 2012-07-31T20:13:36.170 に答える
0

ロギングを非常にきめ細かく制御するために私が最近使用している方法の 1 つは、 log4 appenderです。構成ファイルを編集するよりも少し手間がかかりますが、信じられないほどの柔軟性が得られます。これらのいずれかを構成する方法の簡単な例については、こちらの回答を参照してください。

于 2012-08-01T11:59:09.523 に答える