0

次の Log4j プロパティがあります。

log4j.rootLogger=DEBUG, ONE, TWO

log4j.appender.ONE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ONE.File=logs/one.log
log4j.appender.ONE.DatePattern='.'yyyy-MM-dd
log4j.appender.ONE.layout=org.apache.log4j.PatternLayout
log4j.appender.ONE.layout.ConversionPattern= %-5p [%t]  %c - %m%n


log4j.appender.TWO=org.apache.log4j.DailyRollingFileAppender
log4j.appender.TWO.File=logs/TWO.log
log4j.appender.TWO.DatePattern='.'yyyy-MM-dd
log4j.appender.TWO.layout=org.apache.log4j.PatternLayout
log4j.appender.TWO.layout.ConversionPattern= %-5p [%t]  %c - %m%n

唯一の違いは、ログ ファイルの場所です。使用するアペンダーを選択できるプログラム的な方法はありますか。

IE

if(Config.getInstance().equals("One"))
     //Use appender ONE
else
     //use appender TWO

私の現在の考え/解決策は、2 つのプロパティ ファイルを用意し、set プロパティ メソッドを使用することです。しかし、別の解決策があるかどうか知りたいと思っていました。

ありがとう。

4

1 に答える 1

1

これはうまくいくはずです:

    //Using system args instead of Config
    final Logger rootLogger = Logger.getRootLogger();
    Appender ap = null;
    if (args[0].equals("1")) {
        ap = rootLogger.getAppender("TWO");
    } else if ( args[0].equals("2") ) {
        ap = rootLogger.getAppender("ONE");
    }
    if (ap != null) { 
        rootLogger.removeAppender(ap);
    }
于 2013-08-01T22:57:19.127 に答える