Spring Boot 集成 Logback 日志:控制台彩色日志输出 + 日志文件输出

阿里云教程2个月前发布
14 0 0

默认情况下 Spring Boot 框架使用 Logback 记录日志。

  1. 在 application.yml 文件中配置 Logback 配置文件位置:

logging:
  config: classpath:log/logback-${spring.profiles.active}.xml

  1. Logback 日志配置文件 —— logback-dev.xml
  • 控制台彩色日志输出
  • 同时将日志输出到控制台和文件,日志文件保留15天,单个日志文件最大 5M,所有日志文件最大 200M

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%black(%contextName) %red(%d{yyyy-MM-dd HH:mm:ss}) %yellow(%X{trackId}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <!-- 生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <fileNamePattern>log/jasmine.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
            <!-- 单个文件最大大小 -->
            <maxFileSize>5MB</maxFileSize>
            <!-- 所有日志文件总共的大小 -->
            <totalSizeCap>200MB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表明日期,%thread表明线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

pattern 标签说明:

  • %d:日志输出时间;
  • %thread:日志的进程名字;
  • %-5level:日志级别,并且使用5个字符靠左对齐;
  • %logger{80}:日志输出者的名字;
  • %msg:日志信息;
  • %n:平台的换行符。

控制台日志输出效果截图:

Spring Boot 集成 Logback 日志:控制台彩色日志输出 + 日志文件输出

logback 彩色日志支持的颜色:

// ch.qos.logback.classic.PatternLayout
DEFAULT_CONVERTER_MAP.put("black", BlackCompositeConverter.class.getName()); // 黑色
DEFAULT_CONVERTER_MAP.put("red", RedCompositeConverter.class.getName()); // 红色
DEFAULT_CONVERTER_MAP.put("green", GreenCompositeConverter.class.getName()); // 绿色
DEFAULT_CONVERTER_MAP.put("yellow", YellowCompositeConverter.class.getName()); // 黄色
DEFAULT_CONVERTER_MAP.put("blue", BlueCompositeConverter.class.getName()); // 蓝色
DEFAULT_CONVERTER_MAP.put("magenta", MagentaCompositeConverter.class.getName()); // 品红色
DEFAULT_CONVERTER_MAP.put("cyan", CyanCompositeConverter.class.getName()); // 青色
DEFAULT_CONVERTER_MAP.put("white", WhiteCompositeConverter.class.getName()); // 白色
DEFAULT_CONVERTER_MAP.put("gray", GrayCompositeConverter.class.getName()); // 灰色
DEFAULT_CONVERTER_MAP.put("boldRed", BoldRedCompositeConverter.class.getName()); // 红色(加粗)
DEFAULT_CONVERTER_MAP.put("boldGreen", BoldGreenCompositeConverter.class.getName()); // 绿色(加粗)
DEFAULT_CONVERTER_MAP.put("boldYellow", BoldYellowCompositeConverter.class.getName()); // 黄色(加粗)
DEFAULT_CONVERTER_MAP.put("boldBlue", BoldBlueCompositeConverter.class.getName()); // 蓝色(加粗)
DEFAULT_CONVERTER_MAP.put("boldMagenta", BoldMagentaCompositeConverter.class.getName()); // 品红色(加粗)
DEFAULT_CONVERTER_MAP.put("boldCyan", BoldCyanCompositeConverter.class.getName()); // 青色(加粗)
DEFAULT_CONVERTER_MAP.put("boldWhite", BoldWhiteCompositeConverter.class.getName()); // 白色(加粗)
DEFAULT_CONVERTER_MAP.put("highlight", HighlightingCompositeConverter.class.getName()); // 高亮

© 版权声明

相关文章

暂无评论

none
暂无评论...