日志框架——logback

为什么要用日志框架

System.out.println虽然也可以输出日志,但是形式单一,只能在命令行中输出,日志框架使用起来差不多,但更加灵活,可以输出到文件中,并且方便全面地记录补充信息。

日志等级

默认INFO等级以上的日志才会输出。

ERROR(40, "ERROR"),
WARN(30, "WARN"),
INFO(20, "INFO"),
DEBUG(10, "DEBUG"),
TRACE(0, "TRACE");

logback的安装

logback本身就是springboot的默认日志框架,这里不要单独安装,但是可以安装lombak来简化logback的代码,lombak的maven配置如下:

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
</dependency>

logback的两种配置方式

使用application.yml

logging:
  # 定义输出的格式,这里为命令行输出
  pattern:
    console: "%d - %msg%n"
  # 配置输出的文件路径
  file:
    name: "/var/log/tomcat/sell.log"
  # 配置输出日志的等级,这里为debug以上的日志才进行输出
  level:
    root: debug

使用logback-spring.xml

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

<configuration>
    <!--定义变量,这里只做展示,本配置没有用到-->
    <property name="appName" value="atguigu-springboot"></property>
    <!--负责写入日志的组件,这里配置的是控制台输出的appender-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
      <!--
       日志输出格式:
           %d表示日期时间,
           %thread表示线程名,
           %-5level:级别从左显示5个字符宽度
           %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 
           %msg:日志消息,
           %n是换行符
       -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>
    <!--负责写入日志的组件,这里配置的是滚动输出到文件的appender-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤器,指定等级的日志才可以输出-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--文件路径-->
            <fileNamePattern>
                logs/info.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>

    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤器,指定等级以上的日志才可以输出-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--文件路径-->
            <fileNamePattern>
                logs/error.%d.log
            </fileNamePattern>
        </rollingPolicy>
    </appender>
    
    <!--根logger,引入appender-->
    <root level="info">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>

</configuration>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容