log4j 2讀取的配置文件可以分為三類:src下的配置文件、絕對路徑的配置文件、相對路徑的配置文件。

1 package com.herman.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.net.URL; 6 7 import org.apache.logging.log4j.LogManager; 8 import org.apache.logging.log4j.Logger; 9 import org.apache.logging.log4j.core.config.ConfigurationSource; 10 import org.apache.logging.log4j.core.config.Configurator; 11 12 public class ConfigTest { 13 14 private static Logger logger = LogManager.getLogger(ConfigTest.class); 15 /** 16 * log4j 2讀取配置文件 17 * log4j 2讀取的配置文件可以分為三類:src下的配置文件、絕對路徑的配置文件、相對路徑的配置文件 18 */ 19 20 //第一類 加載src下的配置文件 21 public static void test0(){ 22 //src下的配置文件會默認的被log4j的框架加載,我們就不顯示的加載了 23 //直接測試 24 logger.info("我打印了......."); 25 //輸出內容 26 //2014-09-01 15:49:30,229 INFO [main] test.ConfigTest (ConfigTest.java:18) - 我打印了....... 27 } 28 29 //第二類 絕對路徑的配置文件 30 public static void test1(){ 31 //我們將log4j2.xml放在D盤下 32 //這是需要手動的加載 33 //絕對路徑配置文件 34 ConfigurationSource source; 35 try { 36 //方法1 使用 public ConfigurationSource(InputStream stream) throws IOException 構造函數 37 source = new ConfigurationSource(new FileInputStream("D:\\log4j2.xml")); 38 39 //方法2 使用 public ConfigurationSource(InputStream stream, File file)構造函數 40 File config=new File("D:\\log4j2.xml"); 41 source = new ConfigurationSource(new FileInputStream(config),config); 42 43 //方法3 使用 public ConfigurationSource(InputStream stream, URL url) 構造函數 44 String path="D:\\log4j2.xml"; 45 source = new ConfigurationSource(new FileInputStream(path),new File(path).toURL()); 46 47 //source.setFile(new File("D:\log4j2.xml")); 48 //source.setInputStream(new FileInputStream("D:\log4j2.xml")); 49 Configurator.initialize(null, source); 50 Logger logger = LogManager.getLogger(ConfigTest.class.getName()); 51 logger.trace("trace..."); 52 logger.debug("debug..."); 53 logger.info("info..."); 54 logger.warn("warn..."); 55 logger.error("error..."); 56 logger.fatal("fatal..."); 57 //一下是運行效果 58 /*2014-09-01 16:03:07,331 DEBUG [main] test.ConfigTest (ConfigTest.java:42) - debug... 59 2014-09-01 16:03:07,331 INFO [main] test.ConfigTest (ConfigTest.java:43) - info... 60 2014-09-01 16:03:07,331 WARN [main] test.ConfigTest (ConfigTest.java:44) - warn... 61 2014-09-01 16:03:07,331 ERROR [main] test.ConfigTest (ConfigTest.java:45) - error... 62 2014-09-01 16:03:07,331 FATAL [main] test.ConfigTest (ConfigTest.java:46) - fatal...*/ 63 } catch (Exception e) { 64 e.printStackTrace(); 65 } 66 } 67 68 //第三類 相對路徑的配置文件加載 69 public static void test2(){ 70 //這里需要注意路徑中不要出現中文和空格,如果存在中文,請使用url轉碼 71 ConfigurationSource source; 72 try { 73 //方法1 使用getResource() 74 String path="/com/herman/config/log4j2.xml"; 75 URL url=ConfigTest.class.getResource(path); 76 source = new ConfigurationSource(new FileInputStream(new File(url.getPath())),url); 77 Configurator.initialize(null, source); 78 79 //方法2 使用System.getProperty 80 String config=System.getProperty("user.dir"); 81 source = new ConfigurationSource(new FileInputStream(config+"\\src\\com\\herman\\config\\log4j2.xml")); 82 Configurator.initialize(null, source); 83 84 //輸出內容 85 /*2014-09-01 16:32:19,746 DEBUG [main] test.ConfigTest (ConfigTest.java:53) - debug... 86 2014-09-01 16:32:19,746 INFO [main] test.ConfigTest (ConfigTest.java:54) - info... 87 2014-09-01 16:32:19,746 WARN [main] test.ConfigTest (ConfigTest.java:55) - warn... 88 2014-09-01 16:32:19,746 ERROR [main] test.ConfigTest (ConfigTest.java:56) - error... 89 2014-09-01 16:32:19,746 FATAL [main] test.ConfigTest (ConfigTest.java:57) - fatal...*/ 90 } catch (Exception e) { 91 e.printStackTrace(); 92 } 93 } 94 95 public static void main(String[] args) { 96 //test0(); 97 //test1(); 98 test2(); 99 } 100 }