如何在spring-boot中为ANSI颜色功能配置logback?

时间:2015-01-08 15:23:37

标签: spring-boot logback

我在Windows上运行了一个spring-boot应用程序。我在我的项目中添加了jansi(v1.8)依赖项,用于在Windows上启用彩色终端输出。

包含了spring-boot中提供的logback配置,即在logback.xml中添加了以下行。

<include resource="org/springframework/boot/logging/logback/base.xml" />

我不清楚在logback.xml中配置什么,以便它的日志语句按照spring-boot提供的base.xml进行着色。对不起,如果这是一个非常愚蠢的问题,我是一个新手回归。

谢谢!

3 个答案:

答案 0 :(得分:17)

Logback文档的coloring部分对此进行了描述:

  

如上所述通过括号分组允许对子图案进行着色。从版本1.0.5开始,PatternLayout识别“%black”,“%red”,“%green”,“%yellow”,“%blue”,“%magenta”,“%cyan”,“%white”,“ %grey“,”%boldRed“,”%boldGreen“,”%boldYellow“,”%boldBlue“,”%boldMagenta“,”%boldCyan“,”%boldWhite“和”%highlight“作为转换字。这些转换字旨在包含子模式。由着色词包围的任何子图案将以指定的颜色输出。

还有一个示例配置文件,向您展示如何使用转换字:

<configuration debug="true">
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- On Windows machines setting withJansi to true enables ANSI
         color code interpretation by the Jansi library. This requires
         org.fusesource.jansi:jansi:1.8 on the class path.  Note that
         Unix-based operating systems such as Linux and Mac OS X
         support ANSI color codes by default. -->
    <withJansi>true</withJansi>
    <encoder>
      <pattern>[%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

答案 1 :(得分:17)

Spring boot增加了对此的支持:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-logging-color-coded-output

只需设置

spring.output.ansi.enabled=always

答案 2 :(得分:0)

这是您可以使用的示例配置。

    <?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="CONSOLE_LOG_PATTERN"
              value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%t]){faint} %clr(%-40.40logger{39}.%M){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
    <!--<property name="CONSOLE_LOG_PATTERN" value="%d %p [%c{1}] - %m%n"/>-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="ROLLING_APPENDER"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <!--<file>C:/tmp/var/demo/demo-app.log</file>-->
        <!--<file>/var/log/mds/demo-app.log</file>-->
        <file>${LOG_FOLDER}/demo-app.log</file>
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>
                ${LOG_FOLDER}/demo-app.log.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <!--<fileNamePattern>
                C:/tmp/var/demo-app.log.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>-->
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>20</maxHistory>
            <totalSizeCap>1000MB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <logger name="com.hsbc.app.demo" additivity="false" level="debug">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="ROLLING_APPENDER"/>
    </logger>
    <logger name="org.springframework" level="INFO"/>

    <root level="info">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="ROLLING_APPENDER"/>
    </root>
</configuration>