2013-03-05 103 views
2

我需要幫助編輯Apache Log4j文件的輸出。 我正在使用html佈局來保存創建的日誌。這裏是我的log4j.properties代碼:使用HTML自定義格式的Log4j.properties進行日誌記錄

log4j.rootLogger = DEBUG, FILEALL, FILEMAIN 

log4j.appender.FILEMAIN=org.apache.log4j.FileAppender 
log4j.appender.FILEMAIN.File=${logfileall.name} 
log4j.appender.FILEMAIN.layout=org.apache.log4j.HTMLLayout 
log4j.appender.FILEMAIN.Threshold=DEBUG 

log4j.appender.FILEALL=org.apache.log4j.FileAppender 
log4j.appender.FILEALL.File=${logfilemain.name} 
log4j.appender.FILEALL.layout=org.apache.log4j.HTMLLayout 
log4j.appender.FILEALL.Threshold=WARN 

這就造成這樣 enter image description here

我很困惑,如何改變輸出格式的日誌文件。

我想時間欄,顯示一個時間戳,格式爲HH:MM:SS.S格式,我不想線程列,

而且如果可能的話,我想重新命名的類別就像classpath一樣。

請幫幫忙,我應該怎麼修改我的Log4j.properties文件爲獲得上述事情做好

回答

3

只能更改下列選項org.apache.log4j.HTMLLayout

log4j.appender.FILE.layout.Title=HTML Layout Demo 
log4j.appender.FILE.layout.LocationInfo=true 

順便說一句,你可以做擴展這個class和覆蓋的方法

public String format(LoggingEvent) 
public String getHeader() 

第一種方法獲得的HTML代碼爲每個事件(例如一個新行我在桌子上)。第二種方法獲得報頭的HTML(從DOCTYPE聲明到表標題行,例如<thead>...</thead><tbody>)。

0

您需要使用指定您的首選佈局的自定義模式將您的HTML佈局替換爲模式佈局。

0

與Paul Vargas建議的一樣,您需要構建一個擴展org.apache.log4j.HTMLLayout的自定義佈局。在code of the HTMLLayout

看,你將format方法中看到,時間列不允許任何格式:

... 
sbuf.append("<td>"); 
sbuf.append(event.timeStamp - LoggingEvent.getStartTime()); 
sbuf.append("</td>" + Layout.LINE_SEP); 

格式的線程完成這樣:

... 
String escapedThread = Transform.escapeTags(event.getThreadName()); 
sbuf.append("<td title=\"" + escapedThread + " thread\">"); 
sbuf.append(escapedThread); 
sbuf.append("</td>" + Layout.LINE_SEP); 
...