1. 程式人生 > >Maven專案 Log4j 配置及日誌輸出到相對路徑

Maven專案 Log4j 配置及日誌輸出到相對路徑

1.Maven pom.xml 配置log4j依賴

    <dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
    </dependency>

正確新增依賴後Maven會自動從本地倉庫或者遠端倉庫載入log4j及其依賴的jar包

如果載入完成後專案出現紅色感嘆號提示

一般表示Maven載入的jar包出現問題,此時在Eclipse的window/Problems檢視下檢視有哪些jar包出現問題

下載正確的jar包後替換本地倉庫相應的jar包即可解決

2.建立log4j配置檔案 log4j.properties

log4j.rootLogger = info,A,B

log4j.appender.A = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File = ${logPath}\\log.log
log4j.appender.A.Append = true
log4j.appender.A.Threshold = info
log4j.appender.A.DatePattern ='.'yyyy-MM-dd
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %d %l - %msg%n

log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File =${logPath}\\error.log
log4j.appender.B.DatePattern ='.'yyyy-MM-dd
log4j.appender.B.Append = true
log4j.appender.B.Threshold = ERROR
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %d %l - %msg%n

在上述程式碼塊中定義了兩種log配置

A配置輸出到相對路徑的log.log檔案,用來儲存程式執行的info級別日誌

B配置輸出到相對路徑的error.log檔案,用來儲存程式執行的error級別日誌

3.建立程式配置檔案實現動態獲取相對路徑

application.properties

# The logPath when program running 
log-folder=log

4.程式碼中動態配置路徑

public class LogConfig {
	
	private static Logger logger = LogManager.getLogger(LogConfig.class);
	
	private LogConfig(){
	}
	
	public static void setLog(){
		Properties pro = new Properties();
        try {
        	InputStream in = new BufferedInputStream(new FileInputStream(("application.properties")));
			pro.load(in);
			
                        /*建立log資料夾*/
			FileDirectory.creatDirectory(pro.getProperty("log-folder"));
			
			File file=new File(pro.getProperty("log-folder"));
			String logPath=file.getAbsolutePath();
			/*windows系統路徑特殊*/
			if(pro.getProperty("system").equals("windows")){
				logPath=logPath.replace("\\", "\\\\");
			}
			System.setProperty("logPath",logPath);
			PropertyConfigurator.configure ("log4j.properties");
			logger.info("Log fold config done");
        } catch (Exception e) {
        	logger.error("error",e);
        }
	}
}