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

默认情况下 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:平台的换行符。

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


PicGoimage-20220617133326073.png

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()); // 高亮
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。