log4j 2讀取配置檔案的三種方法
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();
-
}
-
}