格式化slf4j以使用颜色记录消息类型

时间:2012-09-17 22:51:10

标签: java logging slf4j

我正在使用slf4j登录我的Java应用程序。它涉及大量的日志记录和日志监控。
当整个日志以黑色打印时,有时很难从日志中读取和查找信息。
只是为了使其更具可读性,是否可以以不同的颜色记录不同类型的消息?
例如,红色或不同字体大小的所有错误级别消息以及蓝色和不同字体大小的所有信息级别消息。

欢迎任何建议或帮助。 日Thnx。

5 个答案:

答案 0 :(得分:3)

我想到了两个解决方案。它们不是颜色,而是替代解决方案:

  1. 在File Appender配置中,您可以配置模式以包括日志级别(错误,警告等)。然后,您可以grep该文件,按级别过滤消息。

  2. 您可以配置两个具有不同级别阈值的文件追加器(用于两个单独的日志文件)。例如,可以将调试级别以上的所有日志(所以信息,警告,错误)记录到让我们说logs.txt中,另一个会将错误日志记录到errors.txt

  3. 希望它有所帮助。

答案 1 :(得分:3)

你必须记住的事情。

首先,SLF4J只是一个日志记录。如何处理实际的日志消息取决于它使用的绑定。因此,您的问题无效,您应该引用您想要使用的实现(LogBack?Log4J?等)

其次,“着色”在大多数情况下并非有意义。例如,如果您引用的是纯文本日志文件,那么我们无法控制着色,因为它们都是纯文本(除非您的编辑器内置了特殊的语法突出显示日志消息格式)。如果要在控制台/终端中查看颜色,或者将日志输出为允许包含颜色信息(例如HTML)的文件格式,则可能有意义。

考虑到这两个想法,这是我的建议。

LogBack内置支持在控制台输出中着色http://logback.qos.ch/manual/layouts.html#coloring。如果您正在寻找在控制台输出中查看颜色的方法,并且您可以使用LogBack,那么这就是您要寻找的。

答案 2 :(得分:2)

由于没有格式化程序,因此无法更改slf4j日志记录的颜色。 SLF4J是应用程序和某些日志记录工具之间的中间件,例如Log4j或Logback。

您可以更改Log4j输出中的颜色,如here所述。我建议您使用MulticolorLayout

中的jcabi-log

答案 3 :(得分:0)

我对日志级别和包使用过滤器。此示例来自Spring boot application.properties

   logging.level.root=warn
   logging.level.org.springframework=warn
   logging.level.org.hibernate=warn
   logging.level.org.starmonkey.brown=DEBUG

这样我只看到了我想看到的消息

答案 4 :(得分:0)

将下一个附加程序添加到logback.xml中以使日志输出着色:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <Pattern>%d %highlight(%-5level) [%thread] %cyan(%logger{15}): %msg%n</Pattern>
        </encoder>
</appender>