• Log4j 2.0读取配置文件的方法


    log4j中配置日志文件存放的位置不一定在src下面,即根目录下。这个时候我们需要解决如何加载配置文件的问题。在log4j1.x中解决的方法就比较多了。如:PropertyConfigurator.configure();和DOMConfigurator.configure ();这两种方法读取。而在log4j2.x当中,这两个类都已经不存在了。这个时候我们该如何去加载配置文件呢?

    答案也很简单,就是log4j2.x的版本给我提供了ConfigurationSource和Configurator这两个类。我们可以使用它们进行手动的加载任意位置的配置文件信息。

    我就主要介绍三种方法:log4j 2读取配置文件的三种方法。

    log4j 2读取的配置文件可以分为三类:src下的配置文件、绝对路径的配置文件、相对路径的配置文件。我们一一给例子。直接看代码:

    package com.herman.test;  
      
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.net.URL;  
      
    import org.apache.logging.log4j.LogManager;  
    import org.apache.logging.log4j.Logger;  
    import org.apache.logging.log4j.core.config.ConfigurationSource;  
    import org.apache.logging.log4j.core.config.Configurator;  
      
    public class ConfigTest {  
          
        private static Logger logger = LogManager.getLogger(ConfigTest.class);  
        /** 
         * log4j 2读取配置文件 
         * log4j 2读取的配置文件可以分为三类:src下的配置文件、绝对路径的配置文件、相对路径的配置文件 
         */  
          
        //第一类  加载src下的配置文件  
        public static void test0(){  
            //src下的配置文件会默认的被log4j的框架加载,我们就不显示的加载了  
            //直接测试  
            logger.info("我打印了.......");  
            //输出内容  
            //2014-09-01 15:49:30,229 INFO  [main] test.ConfigTest (ConfigTest.java:18) - 我打印了.......  
        }  
          
        //第二类  绝对路径的配置文件  
        public static void test1(){  
            //我们将log4j2.xml放在D盘下  
            //这是需要手动的加载  
            //绝对路径配置文件        
            ConfigurationSource source;  
            try {  
                //方法1  使用  public ConfigurationSource(InputStream stream) throws IOException 构造函数  
                source = new ConfigurationSource(new FileInputStream("D:\log4j2.xml"));  
                  
                //方法2 使用 public ConfigurationSource(InputStream stream, File file)构造函数  
                File config=new File("D:\log4j2.xml");  
                source = new ConfigurationSource(new FileInputStream(config),config);  
                  
                //方法3 使用 public ConfigurationSource(InputStream stream, URL url) 构造函数  
                String path="D:\log4j2.xml";  
                source = new ConfigurationSource(new FileInputStream(path),new File(path).toURL());  
                  
                //source.setFile(new File("D:log4j2.xml"));          
                //source.setInputStream(new FileInputStream("D:log4j2.xml"));        
                Configurator.initialize(null, source);                
                Logger logger = LogManager.getLogger(ConfigTest.class.getName());         
                logger.trace("trace...");         
                logger.debug("debug...");         
                logger.info("info...");       
                logger.warn("warn...");       
                logger.error("error...");         
                logger.fatal("fatal...");  
                //一下是运行效果  
                /*2014-09-01 16:03:07,331 DEBUG [main] test.ConfigTest (ConfigTest.java:42) - debug... 
                2014-09-01 16:03:07,331 INFO  [main] test.ConfigTest (ConfigTest.java:43) - info... 
                2014-09-01 16:03:07,331 WARN  [main] test.ConfigTest (ConfigTest.java:44) - warn... 
                2014-09-01 16:03:07,331 ERROR [main] test.ConfigTest (ConfigTest.java:45) - error... 
                2014-09-01 16:03:07,331 FATAL [main] test.ConfigTest (ConfigTest.java:46) - fatal...*/  
            } catch (Exception e) {  
                e.printStackTrace();  
            }         
        }  
          
        //第三类  相对路径的配置文件加载  
        public static void test2(){  
            //这里需要注意路径中不要出现中文和空格,如果存在中文,请使用url转码  
            ConfigurationSource source;  
            try {  
                //方法1  使用getResource()  
                String path="/com/herman/config/log4j2.xml";  
                URL url=ConfigTest.class.getResource(path);  
                source = new ConfigurationSource(new FileInputStream(new File(url.getPath())),url);  
                Configurator.initialize(null, source);    
                  
                //方法2 使用System.getProperty  
                String config=System.getProperty("user.dir");  
                source = new ConfigurationSource(new FileInputStream(config+"\src\com\herman\config\log4j2.xml"));  
                Configurator.initialize(null, source);  
                  
                //输出内容  
                /*2014-09-01 16:32:19,746 DEBUG [main] test.ConfigTest (ConfigTest.java:53) - debug... 
                2014-09-01 16:32:19,746 INFO  [main] test.ConfigTest (ConfigTest.java:54) - info... 
                2014-09-01 16:32:19,746 WARN  [main] test.ConfigTest (ConfigTest.java:55) - warn... 
                2014-09-01 16:32:19,746 ERROR [main] test.ConfigTest (ConfigTest.java:56) - error... 
                2014-09-01 16:32:19,746 FATAL [main] test.ConfigTest (ConfigTest.java:57) - fatal...*/  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
          
        public static void main(String[] args) {  
            //test0();  
            //test1();  
            test2();  
        }  
    }  
  • 相关阅读:
    Python+request+unittest实现接口测试框架集成实例
    真正解决Jenkins安装插件总是报错的问题(网上查的解决方案都无效)
    Rancher 2.2.2
    Rancher管理k8s集群
    清理cosbench工具所占用磁盘空间的小脚本
    一个检查本机和远程机器的根目录所在磁盘的剩余空间的bash小脚本
    当df命令hang住了, 怎么办?
    OpenCV操作像素的几种方法(单个像素|操作多像素|遍历像素)
    OpenCV-颜色通道的分离、合并(转)
    ImageMagick 提取四通道png图片的alpha及magick使用
  • 原文地址:https://www.cnblogs.com/pianai-shu/p/8274509.html
Copyright © 2020-2023  润新知