gpt4 book ai didi

logging - 如何以编程方式向现有 XML 配置添加新的记录器和附加器

转载 作者:行者123 更新时间:2023-12-05 03:58:59 27 4
gpt4 key购买 nike

我正在使用 log4j2 v2.11。我有一个简单的 log4j2.xml 文件。我需要使用从此文件加载的记录器执行默认记录。但是,根据生成的进程,我需要创建一个不同的日志文件,其中包含进程的名称以及加载的 xml 配置。

我知道:-

    final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();

Appender appender = FileAppender.createAppender(...);
appender.start();
config.addAppender(appender);
AppenderRef ref = AppenderRef.createAppenderRef(...);
AppenderRef[] refs = new AppenderRef[] {ref};
LoggerConfig loggerConfig = LoggerConfig.createLogger(...);
loggerConfig.addAppender(appender, Level.DEBUG, null);
config.addLogger("myapp.namespace", loggerConfig);
ctx.updateLoggers();

但是,createAppender 和 createLogger 是 V2.11 中弃用的方法。

此外,我还知道ConfigurationBuilder。我已经尝试过了,它似乎是用于以编程方式构建配置的。我需要默认配置来自 log4j2.xml 文件。并附加新的附加程序(使用新的文件名和记录器)。

最佳答案

在新版本的log4j2中,可以使用Builder创建Appender实例。因此,为了创建 FileAppender 实例,您可以编写如下内容 -

Appender fileAppender = FileAppender.newBuilder().setName("fileAppender")
.withFileName(basePath + "dynamic_logs.log").setLayout(PatternLayout.SIMPLE_CONVERSION_PATTERN)
.build();

为了创建记录器,使用了 LoggerConfig 类静态方法。 LoggerConfig 类中有两种创建记录器的方法。只有一个接受第一个参数 additivity 作为 String 值的方法已被弃用。现在使用另一种接受第一个参数作为 bool 类型的方法。

下面提到了一种创建动态记录器的方法-

LoggerConfig dynamicLogger = LoggerConfig.createLogger(false, Level.INFO, "logger.name", null, refs, null, config, null);

关于logging - 如何以编程方式向现有 XML 配置添加新的记录器和附加器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57519016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com