springboot中slf4j+logback-classic日志输出到文件简述

为了查看项目运行时的状况,方便分析错误,给项目添加日志功能。

添加Maven包:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
</dependency>

在logback.xml中对进行配置,由于项目需要,每天都有大量日志生成,不能全部装在一个文件中。我们要每天生成一个文件夹,命名为日期。文件夹中会生成debug,info,error,warn四个日志文件,根据日志的类型输出到不同文件中。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <logger name="org.springframework.web" level="debug"/>

  <!-- 定义日志文件 输入位置 -->
  <property name="logDir" value="C:/hunter/log" />
  <!-- 日志最大的历史 30天 -->
  <property name="maxHistory" value="30"/>

  <!-- 控制台输出日志 -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</pattern>
      <charset class="java.nio.charset.Charset">UTF-8</charset>
    </encoder>
  </appender>

  <!-- ERROR级别日志 -->
  <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDir}\%d{yyyyMMdd}\error.log</fileNamePattern>
      <maxHistory>${maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
      <charset class="java.nio.charset.Charset">UTF-8</charset>
    </encoder>
    <append>false</append>
    <prudent>false</prudent>
  </appender>

  <!-- WARN级别日志 -->
  <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>WARN</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDir}\%d{yyyyMMdd}\warn.log</fileNamePattern>
      <maxHistory>${maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
      <charset class="java.nio.charset.Charset">UTF-8</charset>
    </encoder>
    <append>false</append>
    <prudent>false</prudent>
  </appender>

  <!-- INFO级别日志 -->
  <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>INFO</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDir}\%d{yyyyMMdd}\info.log</fileNamePattern>
      <maxHistory>${maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
      <charset class="java.nio.charset.Charset">UTF-8</charset>
    </encoder>
    <append>false</append>
    <prudent>false</prudent>
  </appender>

  <!-- DEBUG级别日志 -->
  <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>DEBUG</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDir}\%d{yyyyMMdd}\debug.log</fileNamePattern>
      <maxHistory>${maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
      <charset class="java.nio.charset.Charset">UTF-8</charset>
    </encoder>
    <append>false</append>
    <prudent>false</prudent>
  </appender>

  <!-- root级别  DEBUG -->
  <root level="DEBUG">
    <!-- 控制台输出 -->
    <appender-ref ref="STDOUT" />
    <!-- 文件输出 -->
    <appender-ref ref="ERROR" />
    <appender-ref ref="INFO" />
    <appender-ref ref="WARN" />
    <appender-ref ref="DEBUG" />
  </root>
</configuration>

如此配置后,运行项目会自动生成下面的日志文件。

最后,在需要记录日志的类中添加下面一行代码

private final Logger logger = LoggerFactory.getLogger(getClass());

在代码需要的地方使用 logger.info("***")  logger.error("***") 等根据情况记录不同级别的日志。关于log级别的讲解,网上有很多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值