你还在用控制台输出?快来学学这款日志框架吧!

1、前言

1.1、为什么需要日志框架

  刚开始学Java的时候,想看看某个变量的值时,用的最多恐怕就是System.out.println()了吧。但是慢慢地就发现有这样一个问题?如何查看控制台的历史记录呢,能不能把控制台输出的内容保存起来,当有需要地时候去查询呢?嗯,日志框架就是为了解决这个问题的。它把控制台输出的内容,通过文件的形式保存起来,方便我们有需要的时候去查询。

1.2、常用日志框架的介绍

  常用的日志框架有SLF4j、Logback、Log4j2等等。SLF4j是Java日志的一个抽象类,而像Logback和Log4j2则是实现类。以前用的最多就是Log4j这个框架了,后面又有了升级版的Log4j2。至于现在常用的Logback是Log4j的改良版,也是SpringBoot的starter内置的一个日志框架。所以下面就是用SLF4j+Logback的组合实现日志记录。

2、SpringBoot整合Logback

2.1、配置logback-spring.xml

  SLF4j、Logback的依赖我们不需要手动引入,在spring-boot-starter-web依赖里面已经集成了,直接用就可以了。我们只需要配置logback-spring.xml这个文件,指明输出日志的格式和位置就可以了。
  在resource文件夹下面创建一个logback-spring.xml,在里面添加日志的配置。如果名字不为logback-spring,就要到application.properties文件里手动设置了。
  以下是我的logback-spring.xml配置。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <!-- 控制台打印 -->
    <appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %logger{50} - %msg%n</pattern>
        </layout>
    </appender>

    <!--输出 INFO 级别及以上日志-->
    <appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤 error 级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>

        <!-- 滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>./logs/formal.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!--输出 ERROR 级别日志-->
    <appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>

        <!-- 设置滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>./logs/error.%d.log</fileNamePattern>

            <!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,
            且<maxHistory> 是1,则只保存最近1个月的文件,删除之前的旧文件 -->
            <MaxHistory>1</MaxHistory>

        </rollingPolicy>
    </appender>

    <!--输出日志级别为 INFO 及以上-->
    <root level="INFO">
        <appender-ref ref="consoleApp"/>
        <appender-ref ref="fileInfoApp"/>
        <appender-ref ref="fileErrorApp"/>
    </root>

</configuration>

  使用Logback输出信息到控制台

@RestController
public class LoginController {

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

    @Autowired
    private LoginMapper loginMapper;

    @RequestMapping("/login")
    Object login(HttpServletRequest request){
        List<Login> logins=loginMapper.findall();
        logger.error("发生了一个错误");
        return JSON.toJSONString(logins);
    }
}
2.2、常用标签的讲解

  下面讲一下log-spring.xml里面的一些常用标签。
  appender标签:写日志记录的组件
  filter标签:过滤器组件
  onMatch标签:ACCEPT表示匹配这级别以上的,DENY表示不匹配这级别以上的
  onMismatch标签:ACCEPT表示匹配这级别以下的,DENY表示不匹配这级别以下的
  encoder标签:把输出的日志转换成输出流
  pattern标签:指定输出日志的格式
  rollingPolicy标签:设置日志的滚动策略
  fileNamePattern标签:设置日志的输出路径
  root标签:设置日志的输出级别

2.3、效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值