logback在SpringBoot中的简单使用

logback在SpringBoot中的简单使用

日志记录在springboot中是必不可少的一环,在此记录一下简单配置,以及使用过程。



一、添加配置文件,新增配置

1.在resources中新建一个配置文件logback-spring.xml

当然也可以使用其他命名,具体请百度。
在这里插入图片描述

2.配置以及内容

具体内容,以及解释在配置文件中写了注释,可以直接在项目中创建配置文件后查阅

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 常量,类似与K - V 键值对,通过${xx}引用。日志存放路径 -->
    <property name="log.path" value="logs/test"/>
    <!-- 日志输出格式
     d{HH:mm:ss.SSS}  日志输出的各式
     [%thread]   执行日志的线程
     %-5level    五个空格,可以自行调整为自己需要的格式
     %logger{20} 输出的日志最大长度
     [%method,%line] 调用日志的方法,以及行数
     %msg%n" 日志内容,并且换行
     -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>

    <!-- 日志输出的方式
    ConsoleAppender 这个类是控制台输出,不打印到文件中
     -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--日志输出的格式引用-->
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!--在此,我们只输出info以及大于info级别以上的的日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <!-- 系统日志输出
     RollingFileAppender    代表滚动日志,我们可以按天或者按月来生成不同的日志文件
     -->
    <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">
            <!-- 日志文件名格式
                %d{yyyy-MM-dd} 按天生成日志
             -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <!--输出日志的格式-->
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <!--过滤器,表示只打印INFO级别的日志-->
        <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>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</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>

    <!-- com.xxx 包下的日志打印则此记录器  -->
    <logger name="com.xxx" level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </logger>

    <!--根日志记录器
	不在com.xxx包下的日志则使用此记录器,比如系统级别的,只打印在控制台
	-->
    <root level="info">
        <appender-ref ref="console"/>
    </root>

</configuration>

二、使用步骤

1.在成员变量的位置加入这行代码

private Logger logger = LoggerFactory.getLogger(LogController.class);

具体如下
访问一下这个接口,便打印一下当前时间,睡眠2s后继续打印

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author
 * @Date 2022/4/21 16:36
 * @Describe
 **/
@RestController
public class LogController{

    private Logger logger = LoggerFactory.getLogger(LogController.class);

    @RequestMapping("/testLog")
    public void testLog() throws InterruptedException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        while (true){
            logger.info("当前请求时间{}",simpleDateFormat.format(new Date()));
            Thread.sleep(2000);
        }

    }
}

2.查看日志

在配置文件中,我们打印日志的位置在项目的logs目录下,如果没有这个目录,会自动创建
在这里插入图片描述
通过查看日志我们可以看到,日志的格式与下方对应,【时间 线程 方法,行数 日志信息,以及换行】

    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>

在这里插入图片描述

3.如果想打印error级别的日志

    @RequestMapping("/test1Log")
    public void test1Log() throws InterruptedException {
       try {
           int i = 1/0;
       }catch (Exception e){
           e.printStackTrace();
           logger.error(e.getMessage(),e);
       }
    }

日志文件如下
在这里插入图片描述


总结

  1. 文件存放路径要根据自己实际情况修改,win和linux的部署需要区分。
  2. 配置文件内容例如 包路径"com.xxx"需要修改成自己的路径。
  3. 检查项目是否有logback的依赖
    在这里插入图片描述
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值