2012-02-17 12 views
2

Log4jを使用すると、ドメインの内容に基づいて異なるファイルにエントリを記録する方法はありますか?ドメインコンテンツに基づく動的ログファイル?

たとえば、loan1234.log、customerJimPhelps.logなどと呼ばれる動的に生成されるログファイルに、特定のローン番号、顧客名、または会社識別子のすべてのロギング情報を記録したかったとします。またはcompanyAcmeCorp.log。必要な特定のログファイルは、事前にはわかりません(事前にローンや顧客がロギングを必要とするかどうかは予測できません)。これは、運用環境でのサポートとデバッグのためです。

+0

は私がドメインに基づいて、異なるファイル名を持つ既存のAppenderで聞いていません。しかし、org.apache.log4j.AppenderSkeletonクラスに基づいて独自のアペンダーを作成し、そのメッセージに基づいて通常のfileappendersを作成することができます。例えばメッセージは 'domain:companyAcme 'です。 'domain:companyAcme'はメッセージから解析でき、ドメイン名に基づいてFileAppenderを作成できます。 – Andreas

答えて

1

あなたは以下のような独自のアペンダを作成することができます。

import org.apache.log4j.Logger; 
import org.apache.log4j.SimpleLayout; 
import org.apache.log4j.FileAppender; 

public class Foo { 
    static Logger logger = Logger.getLogger(Foo.class); 
    public static void main(String args[]) { 

     // setting up a FileAppender dynamically... 
     SimpleLayout layout = new SimpleLayout();  
     FileAppender appender = new FileAppender(layout,"WhateverYouLike.log",false);  
     logger.addAppender(appender); 

     logger.info("WhateverElseYouLike"); 

     logger.removeAppender(appender); 

    } 
} 
関連する問題