我正在使用 slf4j 登录我的 Java 应用程序。它涉及很多日志记录和日志监控。
有时,当整个日志以黑色打印时,很难从日志中读取和查找信息。
只是为了使其更具可读性,是否可以用不同颜色记录不同类型的消息?
例如,红色或不同字体大小的所有错误级别消息以及蓝色和不同字体大小的所有信息级别消息。
欢迎任何建议或帮助。谢谢。
无法更改slf4j
日志的颜色,因为没有格式化程序。SLF4J 是您的应用程序和一些日志记录工具之间的中间件,例如 Log4j 或 Logback。
您可以更改 Log4j 输出中的颜色,如此处所述。我建议使用jcabi -log中的MulticolorLayout
你必须记住的事情。
首先,SLF4J 只是一个日志外观。如何处理实际的日志消息取决于它使用的绑定。因此你的问题是无效的,相反,你应该引用你想要使用的实现(LogBack?Log4J?等)
其次,“着色”在大多数情况下没有意义。例如,如果您引用纯文本日志文件,我们无法控制颜色,因为它们都是纯文本(除非您的编辑器为您的日志消息格式内置了特殊的语法突出显示)。如果您想在控制台/终端中查看颜色,或者您将日志输出为允许您包含颜色信息的文件格式(例如 HTML),这可能是有意义的。
考虑到这两个想法,这是我的建议。
LogBack在控制台输出中内置了对http://logback.qos.ch/manual/layouts.html#coloring着色的支持。如果您正在寻找在控制台输出中查看颜色的方法,并且您可以使用 LogBack,那么这就是您正在寻找的。
我想到了两个解决方案。它们不是颜色,而是替代解决方案:
在您的 File Appender 配置中,您可以配置模式以包含日志级别(错误、警告等)。然后你可以 grep 文件,按级别过滤消息。
您可以配置具有不同级别阈值的两个文件附加程序(用于两个单独的日志文件)。例如,一个人会将调试级别以上的所有日志(例如信息、警告、错误)记录到logs.txt中,而另一个只会将错误日志记录到errors.txt中
希望能帮助到你。
将下一个 appender 添加到 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>
我对日志级别和包都使用过滤器。这个例子来自 Spring boot application.properties
logging.level.root=warn
logging.level.org.springframework=warn
logging.level.org.hibernate=warn
logging.level.org.starmonkey.brown=DEBUG
这样我只看到我想看到的消息