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();
}
}
很簡單吧!歡迎大家關注我的個人部落格!!!!
如有不懂,疑問或者欠妥的地方,請加QQ群:135430763 進行反饋,共同學習!
相關文章
- Log4j 2.0在開發中的高階使用詳解—配置簡單的檔案輸出(四)
- Log4j 2.0在開發中的高階使用詳解—介紹篇(一)
- Log4j 2.0在開發中的高階使用詳解—預設級別(二)
- Log4j 2.0在開發中的高階使用詳解—配置簡單的控制檯輸出(三)
- Log4j 2.0在開發中的高階使用詳解—SocketAppender的遠端輸出(五)APP
- log4j配置檔案詳解
- 文摘:在EJB中讀取XML配置檔案XML
- java中讀取配置檔案Java
- struts2.0(二)中struts.xml配置檔案詳解XML
- Golang專案中讀取配置檔案Golang
- vue 2.0開發專案中stylus 的配置和使用Vue
- java中讀取.properties配置檔案Java
- php讀取大檔案詳解PHP
- Nmap在實戰中的高階用法(詳解)
- viper 讀取配置檔案
- go配置檔案讀取Go
- IOC - 讀取配置檔案
- 使用android studio開發gradle外掛(三)-讀取配置檔案AndroidGradle
- 01.SpringBoot開發雜記-使用工具類,靜態讀取配置檔案中的配置的寫法Spring Boot
- 如何在python中讀取配置檔案Python
- Python 高階程式設計:深入解析 CSV 檔案讀取Python程式設計
- iOS檔案的高階快取– DDGDataCache_OC 快取庫的高階用法iOS快取
- iOS檔案的高階快取-- DDGDataCache_OC 快取庫的高階用法iOS快取
- Sql server:從XML檔案中讀取配置資訊SQLServerXML
- log4j配置詳解
- Python 高階技巧:深入解析讀取 Excel 檔案的多種方法PythonExcel
- Android讀取配置檔案的方法Android
- 索引器的妙用,讀取配置檔案索引
- Linux 系統配置檔案詳細解讀Linux
- 詳解Vue中watch的高階用法Vue
- Nginx的配置檔案詳解Nginx
- vim的配置檔案詳解
- Java讀取本地檔案,並顯示在JSP檔案中JavaJS
- Silverlight 讀取嵌入在.xap檔案中的檔案內容
- shell讀取配置檔案-sed命令
- springboot讀取配置檔案Spring Boot
- C#讀取ini配置檔案C#
- 說說在 Python 中,如何讀取檔案中的資料Python