有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用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文档上的示例无法编译,它已经过时了,必须添加几个参数,而不知道它们是什么,通常我添加了null
  • 文档中使用的方法现在已被弃用
  • 正在创建文件,但没有出现日志,尽管控制台上有输出,并且在退出程序后,文件中也没有刷新任何内容

有人能给log4j2提供一个带有最新API的下降示例来动态添加文件记录吗?我使用组织。阿帕奇。登录中。log4j 2.8.1


共 (0) 个答案