2010-11-25 48 views
0

私はlog4j Loggerの複数のインスタンスを使いたいと思います。これらのlog4j Loggerインスタンスのそれぞれに、異なるPropertiesオブジェクトをアタッチする必要があります。ここで複数のlog4jインスタンス設定

は、1つのインスタンスの設定するためのコードです:私は2つのlog4jインスタンスを持ちたいとそれらのそれぞれは、異なる特性を持っている場合

LOG4J = org.apache.log4j.Logger.getLogger(Logger.class); 

Properties log4jProps = new Properties(); 

... 

PropertyConfigurator.configure(log4jProps); 

何?

答えて

7

複数のロガーをより詳細に説明する理由を説明できますか?私は複数のlog4jインスタンスを持つことはできないと思います。

あなただけの複数のアペンダをしたい場合は、ここを見て:

# logj4.properties 
log4j.rootCategory = WARN, A 
log4j.category.com.lewscanon = WARN, F 
log4j.category.com.lewscanon.mouser = DEBUG, X 

log4j.appender.A = org.apache.log4j.ConsoleAppender 
log4j.appender.A.layout = org.apache.log4j.PatternLayout 

log4j.appender.F = org.apache.log4j.RollingFileAppender 
log4j.appender.F.layout = org.apache.log4j.PatternLayout 
log4j.appender.F.File = /projects/mouser/logs/lewscanon.log 
log4j.appender.F.MaxFileSize = 512KB 
log4j.appender.F.MaxBackupIndex = 2 

log4j.appender.X = org.apache.log4j.RollingFileAppender 
log4j.appender.X.layout = org.apache.log4j.PatternLayout 
log4j.appender.X.File = /projects/mouser/logs/mouser.log 
log4j.appender.X.MaxFileSize = 512KB 
log4j.appender.X.MaxBackupIndex = 2 

log4j.appender.A.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n 
log4j.appender.F.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n 
log4j.appender.X.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n 

これらの行::

をここで上記のリンクからlog4j.propertiesです

log4j.rootCategory = WARN, A 
log4j.category.com.lewscanon = WARN, F 
log4j.category.com.lewscanon.mouser = DEBUG, X 

次のように言う:

  • すべてをコンソール(コンソール)にログする。ログ警告以上のもののみ
  • com.lewscanonパッケージからアペンダF(すべてlewscanon.logファイルに移動)にすべてを記録します。ログ警告以上のもののみ
  • com.lewscannon.mouserパッケージからアペンダーX(すべてmouser.logファイルに移動)までのすべてをログに記録します。唯一のデバッグのログを記録し、

の上にそれは完全なクラス名を供給することも可能です:

log4j.category.com.lewscanon.SomeClass = WARN, F 

手段レベル以上の警告と、Fをアペンダするcom.lewscanon.SomeClassクラスからすべてをログに記録します。

Logger.getLogger(String name)が受け入れる:につき、

私は上記の十分な粒状であると仮定していますが、絶対に必要な場合には、より詳細な(私はそれはしかし、十分に実用的ではないと思います)名前。だからあなたのような何かを行うことができます。

log4j.category.myFancyLogger = INFO, F 

をし、レベルの情報でFをアペンダするログロガーを取得するためにLogger.getLogger("myFancyLogger")を使用しています。

+0

私はあなたのリンクを見ました。しかし、どのようにログの場所を前後に変更できますか?つまり、あるlog4jインスタンスを使用し、あるメソッドでは1つのファイルにログを記録し、別のメソッドでは別のファイルにログを記録したいということです。どんな例ですか? – Kavin

+0

編集を参照してください、十分に細かいことを願ってください。 –

+0

それは動作します。ありがとうございました – Kavin