【问题标题】:Spring Boot Logging override ColoursSpring Boot 日志记录覆盖颜色
【发布时间】:2021-05-17 02:03:16
【问题描述】:

我希望使用不同的颜色来区分 Spring Ansi Colored Logs 中的 INFO、DEBUG 和 TRACE,因为它们目前都设置为绿色(见下表)

来自这里的文档https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-logging-color-coded-output

使用%clr 转换字配置颜色编码。在最简单的形式中,转换器根据日志级别为输出着色,如下例所示:

%clr(%5p) 下表描述了日志级别到颜色的映射:

Level Color
FATAL Red
ERROR Red
WARN Yellow
INFO Green
DEBUG Green
TRACE Green

看来我需要覆盖 %clr 转换词,但我在文档中找不到任何关于此的内容。

如果它有所作为,我正在使用 log4j2,并希望将其构建到应用程序中。

【问题讨论】:

    标签: java spring spring-boot log4j2


    【解决方案1】:

    您可以使用 GrepConsole 插件 (Idea)。 查看更多here

    【讨论】:

    • 谢谢,这是一个很好的答案,但是我正在寻找可以在 CLI 级别工作的东西。 IE。 java -jar xxxx.jar
    【解决方案2】:

    我没有看到任何常规/记录的方式来覆盖级别范围内的颜色。例如:ColorConverter for log4j2 不喜欢为那种选项打开。
    您可以尝试定义您的 Log42 颜色插件实现,即使用该 log4j2 Plugin 注释进行注释的插件实现:

    @Plugin(name = "color", category = PatternConverter.CATEGORY)
    

    但不确定它是否工作或可靠工作,因为 Spring 已经为此定义了一个。
    记录在这里是ColorConverter source code for logback.

    顺便说一句,如果足够的话,你可以从CONSOLE_LOG_PATTERN定义的in the Spring Boot source code for log4j2:开始定义一个模式

    <Property name="CONSOLE_LOG_PATTERN">%clr{%d{${sys:LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${sys:LOG_LEVEL_PATTERN}} %clr{%pid}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
    

    【讨论】:

    • 不知道为什么 log4j2 ColorConverter 是最终的而 logback 不是,但是已经按照 Springs 自己的方式创建了一个新的实现,它就像一个魅力。谢谢
    • 这很好,但随着时间的推移不确定可靠性。我认为(可能是错误的)你有 50% 的机会可以工作(因为 Spring 可以选择任何 log4j2 插件来声明颜色插件:@Plugin(name = "color", category = PatternConverter.CATEGORY)。那是你和他们的。你有没有添加任何东西来强制使用你的插件而不是他们的?
    • 是的,我添加了具有不同插件名称sclr 的新实现,并调整了 CONSOLE_LOG_PATTERN 以使用它。我本来希望以某种方式重用现有的类,但由于大多数东西都是私有的或不是为了扩展而设计的,所以没有太多可重用的......
    【解决方案3】:

    首先,定义的 %clr 是一个 logback 转换规则,并且是具有颜色逻辑的规则。 这个转换规则是在spring类DefaultLogbackConfiguration中定义的。

    我们可以看到spring在logback配置器中添加了ColorConverter和clr conversionWord。

    从这次探索中,我的结论是您必须创建自己的 logback.xml 文件(根据文档,它禁用 spring 默认配置)。有了这个文件,您可以像这样添加自己的转换规则:

    <conversionRule conversionWord="nanos" 
                  converterClass="chapters.layouts.MySampleConverter" />
    

    之后,您应该使用上面创建的 conversionWord 更改属性 logging.pattern.console,而不是 %clr。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-13
      • 2017-12-26
      • 2017-11-01
      • 2012-01-12
      • 2015-05-01
      • 2015-08-14
      • 2019-06-18
      • 1970-01-01
      相关资源
      最近更新 更多