如何更改日志输出log4j的颜色

时间:2012-02-20 19:35:46

标签: java logging log4j

我目前正在开发一个Java项目,我们正在使用日志记录。创建日志时,无论日志记录级别如何(INFO,ERROR等),它始终以纯黑文本打印

如何覆盖这些输出的颜色,例如所有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?有没有人有任何想法?

由于

1 个答案:

答案 0 :(得分: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