SpringBoot使用logback实现日志按天滚动

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

SpringBoot使用logback实现日志按天滚动

需求

  1. 日志按天滚动分割
  2. info和error日志输出到不同文件

为什么使用Logback

在这里,我不去深究的讨论各个日志框架的优劣,网上的对比文章实在太多了。我只说以下几点理由。

  1. Logback是Log4j的升级版,作者为同一个人,作者不想再去改Log4j,所以写了Logbak
  2. 使用日志框架的最佳实践是选择一款日志门面+一款日志实现,这里选择Slf4j+Logback, Slf4j作者也是Logbak的作者
  3. SpringBoot从1.4版本开始,内置的日志框架就是Logback

Logback在SpringBoot中配置方式一

可以直接在applicatin.properties或者application.yml中配置
以在application.yml中配置为例:

[html] view plain copy

  1. logging:
  2.   pattern:
  3.     console: "%d - %msg%n"
  4.   file: /var/log/tomcat/sell.log
  5.   level: com.imooc.LoggerTest: debug

可以发现,这种配置方式简单,但能实现的功能也很局限,只能

  • 定制输出格式
  • 输出文件的路径
  • 指定某个包下的日志级别

如果需要完成我们的需求,这就得用第二种配置了

Logback在SpringBoot中配置方式二

在resource目录下新建logback-spring.xml, 内容如下:

[html] view plain copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3.  <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
  4.         <layout class="ch.qos.logback.classic.PatternLayout">
  5.             <pattern>%d - %msg%n</pattern>
  6.         </layout>
  7.     </appender>
  8.     <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
  9.         <filter class="ch.qos.logback.classic.filter.LevelFilter">
  10.             <level>ERROR</level>
  11.             <onMatch>DENY</onMatch>
  12.             <onMismatch>ACCEPT</onMismatch>
  13.         </filter>
  14.         <encoder>
  15.             <pattern>%msg%n</pattern>
  16.         </encoder>
  17.         <!--滚动策略-->
  18.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  19.             <!--路径-->
  20.             <fileNamePattern>/var/log/tomcat/sell/info.%d.log</fileNamePattern>
  21.         </rollingPolicy>
  22.     </appender>
  23.     <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
  24.         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  25.             <level>ERROR</level>
  26.         </filter>
  27.         <encoder>
  28.             <pattern>%msg%n</pattern>
  29.         </encoder>
  30.         <!--滚动策略-->
  31.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  32.             <!--路径-->
  33.             <fileNamePattern>/var/log/tomcat/sell/error.%d.log</fileNamePattern>
  34.         </rollingPolicy>
  35.     </appender>
  36.     <root level="info">
  37.         <appender-ref ref="consoleLog" />
  38.         <appender-ref ref="fileInfoLog" />
  39.         <appender-ref ref="fileErrorLog" />
  40.     </root>
  41. </configuration>

每一个appender你可以理解为一个日志处理策略。
第一个appender的name="consoleLog", 名字是自己随意取的,取这个名字,表示这个策略用于控制台的日志。
我们重点看第二个和第三个appender

  1. 因为要把info和error日志输入到不同文件, 所以我们分别建了两个appender。
  2. rollingPolicy是滚动策略,这里我们设置按时间滚动
  3. filter是日志的过滤方式,我们在fileInfoLog里做了如下过滤

[html] view plain copy

  1. <?xml version="1.0"?>
  2. <level>ERROR</level>
  3. <onMatch>DENY</onMatch>
  4. <onMismatch>ACCEPT</onMismatch>

上述代码翻译之后:拦截ERROR级别的日志。如果匹配到了,则禁用处理。如果不匹配,则接受,开始处理日志。
那有的同学要问了,不能这样写吗
<level>INFO</level>
这样不是只拦截INFO日志了吗?
不对!
这就得说一下日志级别了
DEBUG ->INFO -> WARN ->ERROR
如果你设置的日志级别是INFO,那么是会拦截ERROR日志的哦。

原文地址http://www.bieryun.com/2089.html

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
1039 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
3月前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
142 5
|
4月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
509 3
|
3月前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
79 1
|
3月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
82 1
|
4月前
|
存储 Java Android开发
Android|记一个导致 logback 无法输出日志的问题
在给一个 Android 项目添加 logback 日志框架时,遇到一个导致无法正常输出日志的问题,这里记录一下。
85 2
|
4月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
203 1
|
1月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
78 10
|
1月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的家政服务管理平台设计与实现(计算机毕设项目实战+源码+文档)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
61 8
|
1月前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
76 8