首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日志框架的引入(slf4j+logback)

日志框架的引入(slf4j+logback)

作者头像
用户11288958
发布2025-08-11 08:16:11
发布2025-08-11 08:16:11
14600
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

一、简介

重要性:

  • 故障的排查和问题定位
  • 系统监控
  • 数据采集
  • 日志审计

注意事项:

  • 注意日志级别
  • 注意日志内容,日志格式和可读性
  • 避免过度日志记录
  • 注意日志的滚动和归档

为什么选择slf4j+logback

  • 易于切换
  • 配置灵活
  • logback性能更好,集成更方便,功能更强大
  • SpringBoot 默认的日志框架

二、配置文件

  • logback.xml配置:以system为例:

在resources目录下创建logback.xml

代码语言:javascript
代码运行次数:0
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志存放路径 -->
    <property name="log.path" value="logs/oj-system" />
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 10天 -->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 10天 -->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--日志级别-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="console" />
        <appender-ref ref="file_error" />
    </root>

</configuration>

  • 日志输出格式,下面给出了一些常用的日志格式转换词。更多说明, 参考: Chapter 6: Layouts
  1. %d:日期和时间,可以使用各种格式。在上面的例子中,它使用了 HH:mm:ss.SSS 格式,表示小时、分钟、秒和毫秒。
  2. %thread:产生日志事件的线程名。
  3. %level:日志级别(如 INFO, DEBUG, ERROR 等)。
  4. %logger:产生日志事件的 logger 名,通常用于标识发出日志请求的类或模块。在上面的例子中,%logger{20} 表示 logger 名的最大长度为 20 个字符。
  5. %msg:日志消息,即实际记录的日志内容。
  6. %method表示产生日志事件的方法名
  7. %line表示产生日志事件的行号

滚动策略:

  • TimeBasedRollingPolicy:最常用的滚动策略,它根据时间来制定滚动策略。
  • SizeBasedTriggeringPolicy:基于日志文件大小的滚动策略。当日志文件达到指定的大小时,它会被滚动(即创建一个新的日志文件)。
  • FixedWindowRollingPolicy:固定窗口滚动策略。它根据一个固定的窗口大小(即可以保留的日志文件数量)来滚动日志文件。

日志测试(用get请求去测试管理员登录接口)

如上图打印了日志: 22:20:13.577 [http-nio-1208-exec-6] ERROR c.q.c.s.h.GlobalExceptionHandler - [handleHttpRequestMethodNotSupported,35] - 请求地址'/sysUser/login',不支持'GET'请求

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
    • 重要性:
    • 注意事项:
    • 为什么选择slf4j+logback
  • 二、配置文件
    • 滚动策略:
    • 日志测试(用get请求去测试管理员登录接口)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档