首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DefaultRolloverStrategy Log4j2不工作(以编程方式)

DefaultRolloverStrategy Log4j2不工作(以编程方式)
EN

Stack Overflow用户
提问于 2019-02-13 07:38:55
回答 1查看 430关注 0票数 1

我需要创建一个滚动文件附加器,并在运行时使用log4j2设置日志文件的数量。因此我使用以下代码来实现这一点:

代码语言:javascript
运行
复制
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();

DefaultRolloverStrategy strategy = DefaultRolloverStrategy.newBuilder()
        .withMax("4")
        .withMin("1")
        .withFileIndex("max")
        .withConfig(config)
        .withCompressionLevelStr(Deflater.NO_COMPRESSION + "")
        .build();

PatternLayout layout = PatternLayout.newBuilder().withConfiguration(config)
        .withPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%5p] %pid --- %-40.40logger{39} : %m%n%wEx")
        .build();

RollingFileAppender appender = RollingFileAppender.newBuilder().setConfiguration(config)
        .withName("TraceFileAppender")
        .withLayout(layout)
        .withFileName("log.log")
        .withFilePattern("log.%d{yyyy-MM-ddHHmmSSS}.log")
        .withPolicy(SizeBasedTriggeringPolicy.createPolicy("20KB")
        .withStrategy(strategy)
        .build();

appender.start();
config.addAppender(appender);

LoggerConfig loggerConfig = config.getRootLogger();
loggerConfig.setLevel(Level.toLevel("DEBUG"));
loggerConfig.addAppender(appender, null, null);

这是正常工作,除了从最大数量的文件...在我的策略中,我得到的文件比前4个文件还多。怎么啦?欢迎任何帮助!

提前谢谢你,

致敬Peter

EN

回答 1

Stack Overflow用户

发布于 2019-02-14 01:20:09

pfff花了我一段时间但我让它工作了.这里没有太多关于编程更改log4j2附加器的信息,所以这是我的解决方案:

代码语言:javascript
运行
复制
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
        Configuration config = ctx.getConfiguration();

        PathCondition[] pathConditions = new PathCondition[1];
        pathConditions[0] = IfAccumulatedFileCount.createFileCountCondition(Integer.parseInt(expire));

        DeleteAction action = DeleteAction.createDeleteAction("C:\\logs\\BuddyServer\\", true, 1, false, null, pathConditions, null, config);
        Action[] actions = new Action[1];
        actions[0] = action;

        DefaultRolloverStrategy strategy = DefaultRolloverStrategy.newBuilder()
                .withMax(expire)
                .withCustomActions(actions)
                .withMin("1")
                .withFileIndex("max")
                .withConfig(config)
                .withCompressionLevelStr(Deflater.NO_COMPRESSION + "")  
                .build();


        PatternLayout layout = PatternLayout.newBuilder().withConfiguration(config)
                .withPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%5p] %pid --- %-40.40logger{39} : %m%n%wEx")
                .build();

        RollingFileAppender appender = RollingFileAppender.newBuilder().setConfiguration(config)
                .withName("TraceFileAppender")
                .withLayout(layout)
                .withFileName(file + ".log")
                .withFilePattern(file + ".%d{yyyy-MM-ddHHmmSSS}.log")
                .withPolicy(SizeBasedTriggeringPolicy.createPolicy(segment))
                .withStrategy(strategy)
                .build();

        appender.start();
        config.addAppender(appender);

        LoggerConfig loggerConfig = config.getRootLogger();
        loggerConfig.setLevel(Level.toLevel(buddyConfig.getOption("log", "verbose").toUpperCase()));
        loggerConfig.addAppender(appender, null, null);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54660355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档