ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

解决重载logf4j2配置文件问题

2020-09-03 22:01:30  阅读:484  来源: 互联网

标签:logf4j2 配置文件 source LoggerContext apache context 重载 new configuration


1 问题:重载logf4j2配置文件

 

2 解决方案

2.1 官方文档:How do I reconfigure log4j2 in code with a specific configuration file?

https://logging.apache.org/log4j/2.x/faq.html#config_from_code

// import org.apache.logging.log4j.core.LoggerContext;
可以配置本地文件
LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
File file = new File("path/to/a/different/log4j2.xml");

// this will force a reconfiguration
context.setConfigLocation(file.toURI());

 

2.2 使用ConfigurationFactory 创建

//ConfigurationFactory的实现类 :XmlConfigurationFactory,YamlConfigurationFactory,
InputStream = null;
in = new FileInputStream(new File("path/to/a/different/log4j2.xml"));
ConfigurationSource source = new ConfigurationSource(inputStream);
Configuration configuration = new XmlConfigurationFactory().getConfiguration(context, source);
context.setConfiguration(configuration);

2.3 使用Nacos解决

    @NacosConfigListener(dataId = "log4j2.yml")
    public void onMessage(String config) throws UnsupportedEncodingException {
        System.out.println(config);

        LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);

        InputStream inputStream = new ByteArrayInputStream(config.getBytes("UTF-8"));

        try {
            ConfigurationSource source = new ConfigurationSource(inputStream);
            Configuration configuration = new YamlConfigurationFactory().getConfiguration(context, source);
            context.setConfiguration(configuration);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

标签:logf4j2,配置文件,source,LoggerContext,apache,context,重载,new,configuration
来源: https://www.cnblogs.com/Lambquan/p/13610880.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有