使用场景
虽然log4j2可以设置文件变更监听自动重新配置,但最近想用配置中心统一配置日志,在调试的时候更方便一些。
代码没啥难度,如下
public void reConfig(String log4j2XmlContent) throws IOException {
// 创建XML配置解析工厂
ConfigurationFactory configFactory = XmlConfigurationFactory.getInstance();
// 设置配置工厂为XML方式
ConfigurationFactory.setConfigurationFactory(configFactory);
// 转换配置为输入流
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(log4j2XmlContent.getBytes());
// 转换配置流为配置源
ConfigurationSource configurationSource = new ConfigurationSource(byteArrayInputStream);
// 获取日志环境
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
// 生成新的配置
Configuration configuration = configFactory.getConfiguration(ctx, configurationSource);
// 使用新配置重新配置环境
ctx.reconfigure(configuration);
// 忽略其它资源释放代码
}