天天看點

log4j日志檔案路徑設定

假設有如下标準化的目錄結構:

$HOME

|-- log

|-- conf

|-- bin

|-- lib

|-- data

jar包放在lib目錄,啟動腳本放在bin目錄,日志檔案放在log目錄,配置檔案放在conf目錄(包括log4j的配置檔案log4j.properties)。

在程式代碼和配置檔案中均不定義絕對目錄如:/usr/local/myapp/log/myapp.log和/usr/local/myapp/conf/log4j.properties等。

那麼在代碼中可以如下實作:

String path = System.getProperty("java.class.path");

int first_index = path.lastIndexOf(System.getProperty("path.separator")) + 1;

int last_index = path.lastIndexOf(File.separator) + 1;

path = path.substring(first_index, last_index);

System.setProperty("myhome", path); // "myhome"供log4j.properties使用

PropertyConfigurator.configure(path + "/conf/log4j.properties");

log4j.properties中的日志檔案路徑配置為:

log4j.appender.stdout.File=${myhome}/log/myapp.log

這樣不管在哪兒啟動,都可以保持日志檔案和配置檔案路徑不随變化。