2017-02-08 6 views
2

1つのロガーが1つのログバック構成ファイルを使用し、別のロガーが別の構成ファイルを使用するクラスで、2つの異なるロガーを使用したいとします。例えば:私はこれをしたい異なる構成を持つ複数のロガーのログバック

class Sample { 
    // LOGGER 1 follows configuration from logback1.xml 
    private static final LOGGER1 = LoggerFactory.getLogger(Sample.class); 

    // LOGGER 2 follows configuration from logback2.xml 
    private static final LOGGER2 = LoggerFactory.getLogger(Sample.class); 

    public myFunc(){ 
     LOGGER1.info("In myFunc"); // writes to file as configured in logback1.xml 
     LOGGER2.info("Entered myFunc"); // writes to graylog server as configured in logback2.xml 
    } 
} 

理由は、私は、実行時にコードに二ロガーを注入だ、と私は注入されたロガーがメインプロジェクトで使用するロガーと衝突したくないということです。これを行うにはどうしたらいいですか? How to use multiple configurations with logback in a single project?しかし、これは多くの人から1つの構成ファイルを選択するという問題を解決しているようですが、「上記の例のように2つの構成ファイルを同時に使用することはできません」。

答えて

1

これは違うのconfigsから2ロガーを取得するための一つの方法です:

LoggerContext c1 = new LoggerContext(); 
    LoggerContext c2 = new LoggerContext(); 
    new ContextInitializer(c1).configureByResource(new URL("file:logback1.xml")); 
    new ContextInitializer(c2).configureByResource(new URL("file:logback2.xml")); 
    Logger l1 = c1.getLogger("x"); 
    Logger l2 = c2.getLogger("x"); 
関連する問題