2
我需要添加編程文件記錄,動態生成的文件名。在運行時動態添加文件記錄與Log4j2 2.8.1
我的代碼是這樣的:
private static final Logger LOGGER = LogManager.getLogger(Archiver.class);
public static void openLogfile(String folder) {
String dateTime = "TODO";
String fileName = folder + "upload" + dateTime + ".log";
LOGGER.info("Opening " + fileName + " for logging.");
// setting up a FileAppender dynamically...
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
Layout layout = PatternLayout.createLayout(PatternLayout.SIMPLE_CONVERSION_PATTERN, null, config, null,
null, true, true, null, null);
Appender appender = FileAppender.createAppender(fileName, "false", "false", "File", "true",
"false", "false", "4000", layout, null, "false", null, config);
appender.start();
config.addAppender(appender);
AppenderRef ref = AppenderRef.createAppenderRef("File", null, null);
AppenderRef[] refs = new AppenderRef[]{ref};
LoggerConfig loggerConfig = LoggerConfig.createLogger(true, Level.DEBUG, "org.apache.logging.log4j", "", refs,
null, config, null);
loggerConfig.addAppender(appender, null, null);
config.addLogger("org.apache.logging.log4j", loggerConfig);
ctx.updateLoggers();
}
我看了一下配方How to add Log4J2 appenders at runtime programmatically?和http://logging.apache.org/log4j/2.x/manual/customconfig.html#AddingToCurrent。
我的問題是:
- 在上述不會編譯log4j2文檔的例子,它已經過時了,只好沒有太多的想法,他們是什麼添加幾個參數,通常我加空。
- 文檔中使用的方法現在已被棄用;正在創建
- 的文件,但沒有記錄出現在那裏雖然具有控制檯輸出,並且程序退出後,沒有在文件中任一沖洗。
請問有人請提供一個最新的API的下降示例log4j2動態添加文件日誌記錄?我使用org.apache.logging.log4j 2.8.1。
名字'LOGGER'不符合Java的命名約定。所有大寫名稱都是爲常量變量保留的,或者至少是指向不可變對象的'final'變量。 –
@LewBloch感謝您的提醒,任何希望您也可以幫助解決手頭的問題?問題不完全是關於代碼樣式。 –
這感覺就像一個[XY問題(https://meta.stackexchange.com/a/66378),可以請你描述你的理由想一個綱領性的解決方案嗎? –