2013-02-24 53 views
1

我想使用html佈局製作一個log4j文件。我的繼承人log4j的文件創建一個動態的log4j輸出文件

# Define the root logger with appender file 
log = /usr/home/log4j 
log4j.rootLogger = DEBUG, FILE 

# Define the file appender 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=${log}/htmlLayout.html 

# Define the layout for file appender 
log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout 
log4j.appender.FILE.layout.Title=HTML Layout Example 
log4j.appender.FILE.layout.LocationInfo=true 

這是靜態的,但我想讓它這樣,我的主要方法將通過這條線

log4j.appender.FILE.File=myfilepath/myfilename.html 

我怎樣才能做到這一點?目前我正在嘗試使用屬性,但它刪除了所有內容,只顯示此行。

請注意,日誌文件的路徑取決於位置,從正在執行在我的項目的jar文件就會像這樣

(jarDir)/logs/myfilename.html

回答

1

您必須直接調用log4j配置器,而不能依賴默認的初始化行爲。命名屬性文件比log4j.properties其他東西,所以默認的程序沒有找到它,然後在你的代碼,你可以做

Properties props = new Properties(); 
// if MyClass is in package com.example, look for 
// com/example/log4j-config.properties inside the jar 
InputStream in = MyClass.class.getResourceAsStream("log4j-config.properties"); 
try { 
    props.load(in); 
} finally { 
    in.close(); 
} 

// override file location 
props.setProperty("log4j.appender.FILE.File", "myfilepath/myfilename.html"); 

LogManager.resetConfiguration(); 
PropertyConfigurator.configure(props); 
+0

謝謝你的幫助下,我找到了另一種方法,但是這一切都太工作。 – chettyharish 2013-02-24 17:23:22

+0

添加其他方法是? – Damo 2014-01-16 10:17:55