【问题标题】:How to change colour of logging output log4j [duplicate]如何更改日志输出log4j的颜色[重复]
【发布时间】:2012-02-20 19:35:46
【问题描述】:

我目前正在处理一个 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?有人有什么想法吗?

谢谢

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    您可以下载各种 ANSIColorLayout.java 实现之一。这些“颜色记录器”通过扩展 PatternLayout 类来工作。

    然后你可以简单地在你的 log4j 属性中做这样的事情:

    log4j.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

    【讨论】:

    • 如果链接被破坏,您可以在 "ANSIColorLayout extends PatternLayout" 上谷歌,然后您会找到其他链接:)
    • 这似乎是一个愚蠢的问题,但我如何编辑 log4j conf 以使用颜色类?我不确定我有没有?
    • @Dan_Dan_Man:这取决于您使用的 log4j conf 文件的类型。我确实添加了允许更改 stdout 输出以使用颜色记录器的行。
    • 我的意思是对于我们使用日志的每个类,我们导入 org.apache.log4j.Logger。之后,我们创建一个 LOG 变量并使用它来打印出不同的日志消息。那么我们是否将该行添加到我们使用日志记录的每个类中?
    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多