1. 程式人生 > >log4j 2讀取配置檔案的三種方法

log4j 2讀取配置檔案的三種方法

log4j 2讀取配置檔案的三種方法。

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. }