0

Log4jで複数のログを作成しようとしていますが、奇妙な問題に直面しています。これがlog4j.propertiesとそれを実装するコードです。

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILEALL

# Define the file appender
log4j.appender.FILEALL=org.apache.log4j.FileAppender
log4j.appender.FILEALL.File=${logfile.name}
# Define the layout for file appender
log4j.appender.FILEALL.layout=org.apache.log4j.HTMLLayout

#log4j.appender.FILEMAIN=org.apache.log4j.FileAppender
#log4j.appender.FILEMAIN.File=${logfilemain.name}
#log4j.appender.FILEMAIN.layout=org.apache.log4j.HTMLLayout

両方を実行するときにステートメントを追加し、元のステートメントを削除しました

log4j.rootLogger = DEBUG, FILEALL , FILEMAIN

そしてこれはJavaコードです:

System.setProperty("logfile.name", savePath1);
// System.setProperty("logfilemain.name", savePath1);
logger = Logger.getLogger(HarishLog.class.getName());
PropertyConfigurator.configure("log4j.properties");

コードは1つのログを作成するまでは完全に正常に機能しますが、プロパティまたはjavafileのいずれかで2番目のログの設定を有効にすると、何も起こりません。

その上、私は別の名前を付けることができません

log4j.appender.FILEALL.File=${logfile.name}

logfile.nameとに対してのみ機能しlogfilea.nameます。javacodeとpropertiesフォルダーの両方で変更した場合、他の名前に対しては機能しません。どうしてこれなの???

ありがとうございました

4

1 に答える 1

1

これは私のために働きます:

log4j.rootLogger = DEBUG, FILEALL, FILEMAIN

log4j.appender.FILEALL=org.apache.log4j.FileAppender
log4j.appender.FILEALL.File=${logfile.name}
log4j.appender.FILEALL.layout=org.apache.log4j.HTMLLayout

log4j.appender.FILEMAIN=org.apache.log4j.FileAppender
log4j.appender.FILEMAIN.File=${logfilemain.name}
log4j.appender.FILEMAIN.layout=org.apache.log4j.HTMLLayout

import org.apache.log4j.Logger;

public class LogTest {
    public static void main(final String... args) {
        System.setProperty("logfile.name", "logall.txt");
        System.setProperty("logfilemain.name", "logmain.txt");
        Logger logger = Logger.getLogger(LogTest.class.getName());
        logger.info("hello");
    }
}

それでも問題が解決しない場合は、次を追加してみてください。

log4j.debug = true

log4j.propertiesの先頭に移動し、出力メッセージを確認します。

于 2013-02-24T14:43:44.353 に答える