SpringBoot整合logback日志

这篇具有很好参考价值的文章主要介绍了SpringBoot整合logback日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

与log4j相比:

实际上,这两个日志框架都出自同一个开发者之手,Logback 相对于 Log4J 有更多的优点

(1)logback不仅性能提升了,初始化内存加载也更小了。

(2)内容更丰富的文档

(3)更强大的过滤器

二、步骤

1、maven配置jar包

logback默认就在spring-boot-starter-web包中,所以我们只要有spring-boot-starter-web

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

SpringBoot整合logback日志

2、新建logback-spring.xml

springboot官方建议命名为logback-spring.xml,在src/main/resources新建logback-spring.xml,这里不需要在application.properties中配置

默认加载加载配置顺序 logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy

<?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>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </layout>
    </appender>


   <!--   打印到文件 -->
    <appender name="fileInfoApp" 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>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        <!-- 滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    
   
    <!--  打印到文件 -->
    <appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        
        <!-- 设置滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径,因为有 %d所以每天都会意时间来创建新的文件 -->
            <fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
            
            <!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,
            且<maxHistory>1,则只保存最近1个月的文件,删除之前的旧文件 -->
             <MaxHistory>1</MaxHistory>
             
          <!--   保持30天的历史记录上限为3GB总大小 -->
             <totalSizeCap>3GB</totalSizeCap>
            
        </rollingPolicy>
    </appender>
     <!--这里选择INFO就代表,进行INFO级别输出记录,那么在控制台也好,log文件也好只记录INFO及以上级别的日志,这里相当于第一道过滤器-->    
   <root level="INFO">  
        <appender-ref ref="consoleApp"/>
        <appender-ref ref="fileInfoApp"/>
        <appender-ref ref="fileErrorApp"/>
    </root>
</configuration>

有关配置文件详细介绍放到下面讲,这里先跳过

3、controller类

@RestController
@RequestMapping("/api/v1")
public class UserController {
    
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    
    @GetMapping("log")
    public Object testLog(){
        
        logger.debug("---debug---debug---");
        logger.info("---info---信息---");
        logger.warn("---warn ---警告--- ");
        logger.error("---err---错误---");
        //这也是个错误的日志级别
        int i=1/0;
        return "yes";
    }

}

4、效果:
SpringBoot整合logback日志

我们发现,在项目中自动创建app_log/log/app.info(当天日期).log和app.err(当天日期).log文件

然后我们看
SpringBoot整合logback日志

它只存放err级别日志

SpringBoot整合logback日志

它只存放的info和warn两种基本日志,这是为什么呢?详细介绍下配置文件

三、配置文件介绍

1、根节点

它的三个子节点
(1) 格式化日志输出节点,有两个必要属性name和class。
(2) 用来设置某一个包或具体的某一个类的日志打印级别、以及指定。
(3)(要加在最后)(必选,而且只有一个)(用来指定最基础的日志输出级别,他有俩个自己点可以用来应用appender,格式化日志输出)

2、appender节点

它有两个属性name和class

(1) class="ch.qos.logback.core.ConsoleAppender":把日志输出到

(2)class="ch.qos.logback.core.FileAppender":把日志添加到文件

  (3)class="ch.qos.logback.core.rolling.RollingFileAppender":滚动记录文件,先将日志文件指定到文件,当符合某个条件时,将日志记录到其他文件

所以上面第一个appender代表输出到控制台,同时并没有进行任何过滤,所以只要是INFO级别以上的都会在控制台输出。

四、filter过滤器

其它的一看就懂,就这里,一开始一直想不明白,为什么上面的info文件里只有info和warn,而err文件中只有err日志。后来明白了。

他有几个常用的过滤器

(1)LevelFilter 过滤器
级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。

  <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
  </filter>

< level>:设置过滤级别

将过滤器的日志级别配置为ERROR,所有ERROR级别的日志交给appender处理,非ERROR级别的日志,被过滤掉。

(这样的话那上面不是只显示ERROR日志,怎么最后显示的是INFO和WARN日志呢?看下面)

< onMatch>: 用于配置符合过滤条件的操作

< onMismatch>:用于配置不符合过滤条件的操作

再看有这么几个单词DENY(拒绝),NEUTRAL(中性),ACCEPT(接受)

(1)返回DENY,日志将立即被抛弃不再经过其他过滤器;

(2)返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;

(3)返回ACCEPT,日志会被立即处理,不再经过剩余过滤器

在理解下:

<level>ERROR</level>         <!-- 所有ERROR级别的日志交给appender处理,非ERROR级别的日志,被过滤掉 -->
<onMatch>DENY</onMatch>      <!-- 代表符合过滤条件的拒绝输出 -->
<onMismatch>ACCEPT</onMismatch>   <!-- 不符合过滤条件的接受输出 -->  

我靠,这么绕一圈不还是表示非ERROR级别的输出嘛,DEBUG除外,因为DUBUG在root标签,已经过滤掉,都不会走到appender标签这里

(2)ThresholdFilter 过滤器
临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>ERROR</level>
</filter>

这里只会访问ERROR及以上级别的过滤器,而ERROR已经是最高级了,所以就只显示ERROR日志在errer文件中了,所以一切都通了。文章来源地址https://www.toymoban.com/news/detail-455401.html

到了这里,关于SpringBoot整合logback日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • logging.level的含义及设置 【java 日志 (logback、log4j)】

    日志级别 tracedebuginfowarnerrorfatal 常用的有:debug,info,warn,error 通常我们想设置日志级别,会用到 logging.level.root=info logging.level设置日志级别,后面跟生效的区域。root表示整个项目。 也可以写某个包,或者某个类。 例如:logging.level.com.ali.service=error。在com.ali.service包下所有

    2024年02月10日
    浏览(46)
  • flink operator 1.7 更换日志框架log4j 到logback

    更换日志框架 flink 1.18 1 消除基础flink框架log4j 添加logback jar 2 在镜像制作的时候消除: 3-2 制作flink yaml的时候添加参数

    2024年02月21日
    浏览(44)
  • 日志框架梳理(Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2)

    文中代码示例获取:关注【 Qin的学习营地 】,回复【 日志框架梳理 】 在了解日志框架时总会列出一系列框架:Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2,这么多框架让人感到混乱,该怎么选取、该怎么用。接下来,让我们逐步理清这些框架及之间的关系。 首先来了解日志

    2024年02月05日
    浏览(54)
  • 【问题】SpringBoot项目中log4j与logback的Jar包冲突问题

    这篇文章主要给大家介绍了解决SpringBoot项目中log4j与logback的Jar包冲突问题,文中有详细的解决方法和冲突的原因。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/lx/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class

    2024年01月22日
    浏览(90)
  • Springboot配置Log4j日志系统,并将日志存入数据库

    Log4j是apache公司开发的一款日志管理系统,可以高效的管理系统中出现的BUG或者各种信息,并且可以已文本的方式或者数据库存入的方式来记录数据 在pom.xml中导入Log4j依赖 在Resources文件夹下创建一个log4j.properties文件 编写配置文件 这是个测试类 可以看见,控制台和数据库表

    2024年02月08日
    浏览(94)
  • Springboot日志框架logback与log4j2

    目录 Springboot日志使用 Logback日志 日志格式 自定义日志格式 日志文件输出 Springboot启用log4j2日志框架 Springboot底层是使用slf4j+logback的方式进行日志记录 trace:级别最低 debug:调试级别的,常用于跟踪程序的进展 info:普通的打印信息(默认的日志级别) warn:警告级别,不影响

    2024年01月19日
    浏览(46)
  • SpringBoot初级开发--加入Log4j进行日志管理打印(6)

      日志记录在整个java工程开发中占着很重要的比重,因为很多问题的排查需要通过日志分析才能确认。在SpringBoot中我用得最多的就是log4j这个日志框架。接下来我们具体配置log4j.   log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:

    2024年02月11日
    浏览(56)
  • logback/log4j基本配置和标签详解

    什么是logback logback 继承自 log4j,它建立在有十年工业经验的日志系统之上。它比其它所有的日志系统更快并且更小,包含了许多独特并且有用的特性。 logback.xml 首先直接上配置,我在项目过程中发现一些同时遇到需要logback文件的时候就去其他项目copy一个,改吧改吧名字就直

    2024年02月09日
    浏览(59)
  • springboot 集成log4j日志,需要自定义json格式内容输出方便ES采集

    公司需要将服务迁移到K8S环境上,由于目前服务输出的格式不符合ES进行采集的日志格式,所有需要将日志输出的格式进行调整为JSON格式,方便ES采集 之前是直接配置的输出格式的message为 \\\"message\\\": %msg\\\" ,但是由于打日志需要打印json内容的日志就没有进行转义导致,整体输出

    2024年02月12日
    浏览(41)
  • Java中的Log4j是什么?如何使用Log4j进行日志管理

    Log4j是一个Java日志管理工具,它可以帮助开发者在应用程序中记录日志。它是由Apache软件基金会开发和维护的,已经成为Java开发中最流行的日志管理框架之一。 Log4j可以通过多种方式记录日志,包括控制台输出、文件输出、数据库存储等。此外,Log4j还提供了多种日志级别,

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包