2012-02-20 230 views
12

我目前正在開發一個Java項目,我們正在使用日誌記錄。當一個日誌被創建時,無論日誌記錄級別如何(INFO,ERROR等),它總是以純黑色文本打印。如何更改日誌記錄輸出的顏色log4j

如何覆蓋這些輸出的顏色,例如所有ERROR日誌將全部爲紅色WARN日誌將橙色等

感謝

編輯:我設法下載ANSIColorLayout文件和我的log4j.properties現指它。不過,我得到以下錯誤:

log4j:WARN No such property [all] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [reset] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [stacktrace] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [info] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [error] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [defaultcolor] in org.apache.log4j.ConsoleAppender. 

我log4j.properties文件看起來是這樣的:

log4j.rootLogger = DEBUG, CA, FA 

log4j.appender.CA = org.apache.log4j.ConsoleAppender 
log4j.appender.CA.layout = balle.logging.ANSIColorLayout 
log4j.appender.CA.layout.ConversionPattern=%-5p [%d{MM-dd-yyyy HH:mm:ss}] %c - %m%n 
log4j.appender.CA.all=\u001B[1;37m log4j.appender.A1.fatal=\u001B[1;31m 
log4j.appender.CA.error=\u001B[0;31m log4j.appender.A1.warn=\u001B[1;33m 
log4j.appender.CA.info=\u001B[0;37m log4j.appender.A1.debug=\u001B[0;36m 
log4j.appender.CA.reset=\u001B[1;37m 
log4j.appender.CA.stacktrace=\u001B[0;31m 
log4j.appender.CA.defaultcolor=\u001B[1;37m 

我的猜測是,我應該用我自己的自定義是ConsoleAppender?有沒有人有任何想法?

感謝

回答

6

您也可以下載各種ANSIColorLayout.java實施的一個。這些「彩色記錄器」通過擴展PatternLayout類來工作。

然後,你可以簡單地做在你的log4j的conf是這樣的:

og4j.appender.stdout.layout=com.acme.ANSIColorLayout 

這裏有一個鏈接到一個ANSIColorLayout.java準備使用:

http://code.google.com/p/a-distributed-file-system/source/browse/trunk/DistributedFileSystem/ui/net/dfs/ui/ANSIColorLayout.java

+0

如果該鏈接破壞你可以谷歌*「ANSIColorLayout擴展PatternLayout」*,你會發現其他的鏈接:) – TacticalCoder 2012-02-20 19:49:26

+0

這可能看起來像一個愚蠢的問題,但如何編輯log4j conf使用顏色類?我不確定我有嗎? – 2012-02-22 15:20:23

+0

@Dan_Dan_Man:它取決於你正在使用的log4j conf文件的類型。我添加了允許更改* stdout *輸出以使用彩色記錄器的行。 – TacticalCoder 2012-02-22 15:30:54