当前位置: 首页 > 知识库问答 >
问题:

如何对log4j2 RollingFileAppender进行编程配置

张晔
2023-03-14
public static void configLog() {
        String dir = System.getProperty("java.io.tmpdir") + "test\\";
        final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
        final Configuration config = ctx.getConfiguration();
        PatternLayout layout = PatternLayout.newBuilder().withConfiguration(config).withPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN).build();
        SizeBasedTriggeringPolicy policy = SizeBasedTriggeringPolicy.createPolicy("1KB");
        DefaultRolloverStrategy strategy = DefaultRolloverStrategy.createStrategy("10", "0", null, null, config);
        RollingFileManager fileManager = RollingFileManager.getFileManager(dir + "log\\test.log", dir + "log\\test-%i.log", false, false, policy, strategy, null, layout, 128);
        policy.initialize(fileManager);
        RollingFileAppender appender = RollingFileAppender.createAppender(dir + "log\\test.log", dir + "log\\test-%i.log",
                "false", "File", "false", "128", "true", policy, strategy, layout, (Filter) null, "false", "false", (String) null, config);
        appender.start();
        config.addAppender(appender);
        AppenderRef ref = AppenderRef.createAppenderRef("File", Level.INFO, null);
        AppenderRef[] refs = new AppenderRef[] { ref };
        LoggerConfig loggerConfig = LoggerConfig.createLogger("true", Level.INFO, LogManager.ROOT_LOGGER_NAME, "true",
                refs, null, config, null);
        loggerConfig.addAppender(appender, Level.INFO, null);
        config.addLogger(LogManager.ROOT_LOGGER_NAME, loggerConfig);
        ctx.updateLoggers();
    }

共有1个答案

翁宜年
2023-03-14

尽管这是一个老问题,别人可能会觉得它有用,但我相信它是有用的,因为

RollingFileAppender.createAppender(dir + "log\\test.log", dir + "log\\test-%i.log",
            "false", "File", "false", "128", "true", policy, strategy, layout, (Filter) null, "false", "false", (String) null, config);

应该是

RollingFileAppender.createAppender(dir + "log\\test.log", dir + "log\\test-%i.log",
            "true", "File", "false", "128", "true", policy, strategy, layout, (Filter) null, "false", "false", (String) null, config);

第三个参数是append选项https://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/appender/rollingfileappender.html

 类似资料:
  • 我正在通过Java代码以编程方式运行JMeter,我希望生成一组具有不同主体的POST请求。下面是我用来生成一个请求的采样器: 如何用CSV文件中的值替换每个请求主体中的? 我知道GUI版本中有插件,但我还没有找到从Java代码中使用它的方法。

  • 问题内容: 我正在开始使用Google App Engine。我想像Twitter一样进行AJAX聊天。 服务器JSON对响应进行编码, 结果:您好! 还行吧。但是替换RPCHandler 结果:错误。服务器不可访问(获取) 如何对实体进行JSON编码? 问题答案: 在App Engine Python中,您可以使用此脚本将db.Models编码为JSON。您可能必须自定义某些部分,例如DateT

  • 我试图实现一个非常简单的用例,一个UI特性,其中: null 这些建议和类似的建议都不起作用。我也试着愚弄一下反应,看看我能不能做点什么!我使用了真实的DOM: 而且也没用。我甚至无法理解的一件事是这样的建议:将ref作为一个方法(我“猜测”),我甚至没有尝试它,因为我有很多这样的组件,我需要ref来进一步获得每个组件的值,我无法想象如果我的ref没有命名,我如何获得的值! 所以你能给出一个想法,

  • 问题内容: 对于C ++,我们可以使用OpenMP进行并行编程。但是,OpenMP不适用于Python。如果要并行执行python程序的某些部分,该怎么办? 该代码的结构可以认为是: 其中和是两个独立的功能。为了减少运行时间,如何并行而不是按顺序运行这种代码?代码是: 其中和是两个独立的功能。那是我要平行的地方… 问题答案: 您可以使用多处理模块。对于这种情况,我可以使用一个处理池: 这将产生可以

  • 其中和是两个独立的函数。那就是我想平行的地方...

  • 问题内容: 我正在和朋友一起在网上商店工作。他使用PHP为我设置了一个Cookie,并在购物车中添加了一定数量的产品。cookie称为“购物车”,带有产品数量的变量称为“ items”。 而且,我必须阅读cookie并使用javascript获取“购物车”的值并将其打印在HTML文档中,但是我不知道如何使用它,请您能帮我吗?我以前从未使用过Cookie或JSON,但我认为应该使用JSON完成,您能