Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将slf4j格式化为使用颜色记录消息类型_Java_Logging_Slf4j - Fatal编程技术网

Java 将slf4j格式化为使用颜色记录消息类型

Java 将slf4j格式化为使用颜色记录消息类型,java,logging,slf4j,Java,Logging,Slf4j,我正在使用slf4j登录我的Java应用程序。它涉及大量日志记录和日志监控 有时,当整个日志以黑色打印时,从日志中读取和查找信息非常困难。 为了使其更具可读性,是否可以用不同的颜色记录不同类型的消息 例如,所有错误级别消息均为红色或其他字体,所有信息级别消息均为蓝色或其他字体。 欢迎任何建议或帮助。 Thnx.我想到了两种解决方案。它们不是颜色,而是替代解决方案: 在文件追加器配置中,您可以将模式配置为包含日志级别(错误、警告等)。然后您可以对文件进行grep,以便按级别过滤消息 您可以配置两

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

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

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

  • 在文件追加器配置中,您可以将模式配置为包含日志级别(错误、警告等)。然后您可以对文件进行grep,以便按级别过滤消息

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


  • 希望有帮助。

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


    如前所述,您可以在Log4j输出中更改颜色。我建议您使用from

    一些您必须记住的东西

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

    第二,“着色”在大多数情况下是没有意义的。例如,如果您引用的是纯文本日志文件,我们无法控制颜色,因为它们都是纯文本(除非您的编辑器为日志消息格式内置了特殊的语法高亮显示)。如果您希望在控制台/终端中看到颜色,或者您正在将日志输出为允许您包含颜色信息(例如HTML)的文件格式,则此选项可能很有意义

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


    LogBack内置了对控制台输出着色的支持。如果您正在寻找在控制台输出中查看颜色的方法,并且您被允许使用LogBack,这就是您要查找的内容。

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

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

    通过这种方式,我只看到希望看到的消息

    将下一个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>
    
    
    %d%高亮显示(%-5level)[%thread]%青色(%logger{15}):%msg%n
    
    如果您输入自己的IDE名称,可能会有所帮助。您可以询问如何将错误消息映射到Stderr而不是Stdout。日志文件是纯文本文件。没有颜色的概念。但是,您可能会找到一些可以查看日志的内容,这些内容可以为您对日志进行颜色编码…谢谢您的回答,但我使用的是Log4j,我需要从不同的系统收集日志文件并对其进行分析。。因此,在控制台中获取彩色输出是没有用的。我需要日志文件中的颜色。。但是谢谢你的建议,我将尝试HTML输出。如果你可以编写一个带有颜色的纯文本文件,那么你可以期待。然而,这是无法实现的。您可以编写自己的查看器来分析日志消息,并对其进行格式化和显示。我打赌如果你愿意的话。使用HTML加上一些CSS可能是你的方法。谢谢你的回答,但是你所有的建议都是为了在控制台中获得彩色输出。因为我需要从多个系统收集日志文件并进行分析,所以我需要对日志文件进行着色。“要着色的日志文件”?嗯……:)@Panshul将多个日志文件合并到一个try Otros日志查看器中。几年来,我一直在使用它来合并几个基于Java的Windows服务的日志。谢谢!!!这对我有用!在找到它之前,我在谷歌上搜索了几个小时的
    org.slf4j.Logger
    。事实证明,这与spring引导设置有关,而与slf4j记录器无关。再次感谢!