`
357029540
  • 浏览: 728433 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

SpringBoot默认日志配置及自定义日志信息说明

阅读更多

      SpringBoot是使用common logging来集成日志的,但是底层的实现方式是开放的。默认提供了Java Util Logging,Log4J2 和Logback 3种方式,每一种方式都提供了控制台输出和文件输出方式。

        如果项目中通过maven引入了spring-boot-starter的jar或引入spring-boot-starter-web的jar,那么项目中默认引入了spring-boot-starter-logging的jar,该jar提供了用logback的记录日志方式,默认的logback配置文件是base.xml,使用的框架是slf4j的日志架构,如果需要使用其他的日志框架,配置如下:

 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

     在这里主要介绍的是logback的配置说明,配置logback.xml可以直接放在resources文件夹下面或者在resources文件夹下新增一个文件夹如logback文件夹,把logback.xml文件放到该文件夹下,在application.properties配置文件中引入该logback.xml文件,引入方式为

 

logging.config=classpath:/logback/logback.xml

以下是一些常用的日子配置参数说明:

1.configuration是其他节点的根节点,写在最外面,该参数有以下属性:

scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
    scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
    debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

2.property节点是用来定义全局变量的,用此参数来定义的变量可以使用${xx}来引用,该参数有2个属性:

name:设置变量名称。

value:设置变量的值。

3.appender节点用来定义需要输出的日志组件,该参数有2个属性:

name:指定appender的名称。

class:指定appender的全限定名,该属性比较常使用的是ConsoleAppenderFileAppenderRollingFileAppender、AsyncAppender等4个类,下面主要介绍下这4个类的配置说明。

3.1.ConsoleAppender

    该类用于控制台日志的打印,有以下子节点:

3.1.1.encoder

    用于对日志进行格式化。该节点下面有一个pattern节点,主要用于配置日志格式,日志格式样式如:%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{36} - %msg%n

具体参数说明如下:

 

%d{yyyy-MM-dd HH:mm:ss.SSS}——日志输出时间,可以定义为如%d{HH:mm:ss.SSS}的样式
        %-4relative 输出从程序启动到创建日志记录的时间,单位是毫秒,进行左对齐 且最小宽度为4。
        %thread——输出日志的进程名字。
        %-5level——日志级别,并且使用5个字符靠左对齐。
        %logger{36}——日志输出者的名字,名字长度从右到左为36个长度,大于36个长度的字符不显示,长度可以随便设置,为0表示只输入logger最右边点符号之后的字符串。
       %msg——日志消息。
       %n——平台的换行符。

3.1.2.target

 

    字符串 System.out 或者 System.err ,默认 System.out。

3.2.FileAppender

    该类用于文件日志的输出打印,有以下子节点:

3.2.1.file

    用于定义日志文件的输出路径及名称。

3.2.2.append

 

    是否添加到末尾,如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。

 

3.2.3.encoder

 

    用于对日志进行格式化输出,参考3.1.1。

 

3.2.4.prudent

 

    如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。

 

3.3.RollingFileAppender

 

    滚动输出日志记录。有以下子节点:

 

3.3.1.file

 

    用于定义日志首先输出的文件路径,当满足给定条件的时候将会把日志记录到其他指定的文件中。

 

3.3.2.rollingPolicy

 

    日志滚动策略。只有一个class属性,用于指定日志使用的滚动策略,日志的滚动策略主要有2种分别是TimeBasedRollingPolicy和FixedWindowRollingPolicy。

 

3.3.2.1.TimeBasedRollingPolicy

 

    这个是最常用的日志滚动方式,每天生成一个或多个日志文件,使用该滚动方式的时候,可以不需要file子节点。该节点下面有以下子节点:

 

3.3.2.1.1.fileNamePattern

    该节点用于生成日志文件名称的匹配格式,在没有定义日志文件大小的时候日志文件的名称格式如logFile.%d{yyyy-MM-dd}.log,在定义了日志文件大小的时候日志文件的名称格式必须是如下格式logFile.%d{yyyy-MM-dd}-%i.log,不然启动的时候会报错。可以设置为压缩格式,支持zip,gz这2种格式,如logFile.%d{yyyy-MM-dd}-%i.log.zip。

3.3.2.1.2.maxHistory

    日志最大的保留时间,值为整数。当文件的生成格式为logFile.%d{yyyy-MM-dd}.log时,表示是以天为时间间隔的,那么该子节点所填充的值就表示日志文件的保留天数,如30,表示最早生成的日志文件保留的天数为30天,30天过后日志文件都会被删除;如果文件的生成格式为logFile.%d{yyyy-MM }.log时,表示日志文件是按照月份来生成的,当把值设置为5的时候,表示最早的日志文件只能保存5个月,5个月过后生成的日志文件都会被删除。

3.3.2.1.3.timeBasedFileNamingAndTriggeringPolicy

 

    用于定义日志文件的大小。有1个子节点maxFileSize用于定义日志文件的大小。当日志文件的大小超过定义的最大值的时候就会生成新的日志文件。该子节点被定义的时候fileNamePattern定义的生成文件名称必须是如logFile.%d{yyyy-MM-dd}-%i.log这样的文件格式,否则启动报错。

 

3.3.2.2.FixedWindowRollingPolicy

 

    根据固定窗口文件大小算法生成日志文件的滚动策略。该节点有以下子节点:

 

3.3.2.2.1. fileNamePattern

 

    该节点用于生成日志文件名称的匹配格式,日志文件的名称格式必须是如下格式logFile.%i.log。可以设置为压缩格式,支持zip,gz这2种格式,如logFile.%i.log.zip。

 

3.3.2.2.2.minIndex

 

    该节点用于表示%i的起始标号。

 

3.3.2.2.3.maxIndex

 

    该节点用于表示%i的最终标号。

 

3.3.2-1.triggeringPolicy

 

    该节点有1个属性class,使用SizeBasedTriggeringPolicy类来定义文件的大小,配合FixedWindowRollingPolicy使用,该节点的根节点是appendeer。

 

3.3.3.append

 

   是否添加到末尾,说明参考3.2.2

 

3.3.4.encoder

 

    用于对日志进行格式化输出,参考3.1.1。

3.3.5.filter

过滤器,用来过滤满足条件的日志输出,有1个class属性。使用较多的有2种过滤器,分别是级别过滤器LevelFilter和临界值过滤器ThresholdFilter。

3.3.5.1. LevelFilter

过滤的级别,过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。

    返回DENY,日志将立即被抛弃不再经过其他过滤器;
        返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;
        返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。

 

     有以下子节点:

 

3.3.5.1.1.level

 

    该节点表示过滤的级别。

 

3.3.5.1.2.onMatch

 

    表示匹配后的操作,值由DENY,NEUTRAL,ACCEPT。

 

3.3.5.1.3.onMismatch

 

    表示不匹配后的操作,值由DENY,NEUTRAL,ACCEPT。

 

     3.3.5.2. ThresholdFilter

 

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

 

    有1个子节点:

 

    3.3.5.2.1.level

        该节点表示过滤的级别。

    3.4.AsyncAppender

         异步输出日志。有以下子节点:

    3.4.1.discardingThreshold

 

该节点用于不丢失日志。在默认的情况,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的event日志,只保留WARN和ERROR级别的event,为了保持所有的events,设置该值为0。

3.4.2.queueSize

该节点的值影响性能,默认值为256。

 

3.4.3.appender-ref

 

该节点用于引入需要异步输出的appender。

 

4.logger

       该节点用于定义具体的包路径下的所有类或某一个指定的类的具体日志级别。有3个属性分别为name、level和addtivity:

      name为指定的包或类路径。

      level为指定的包或类的日志输出级别,如果没有设置日志级别将会继承root的日志级别。

      addtivity为是否向上级logger传递打印信息,默认是true。

     有以下子节点:

 

4.1.appender-ref

 

    该节点用于引入需要使用相关appender的输出方式,可以有0—n个该节点。

 

5.root

     该节点用来设置appender-ref涉及的名称的日志级别。只有1个属性level用来表示日志的输出级别,大小写无关,TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。只有1个appender-ref子节点,该节点可有0—n个,用于引入相关的日志输出方式。

分享到:
评论

相关推荐

    SpringBoot学习视频

    尚硅谷_SpringBoot_日志-SpringBoot默认配置 尚硅谷_SpringBoot_日志-指定日志文件和日志Profile功能 尚硅谷_SpringBoot_日志-切换日志框架 尚硅谷_SpringBoot_web开发-简介 尚硅谷_SpringBoot_web开发-webjars&静态...

    SpringBoot中自定义日志配置logback-spring.xml

    可直接复制到项目中使用,不好用不要钱 效果: 1、默认生成最新的两个文件 debug.log 和 error.log 2、每50M自动压缩归档到时间文件夹中,生效时间为30天

    尚硅谷springboot视频(上)

    尚硅谷_SpringBoot_日志-SpringBoot默认配置 尚硅谷_SpringBoot_日志-指定日志文件和日志Profile功能 尚硅谷_SpringBoot_日志-切换日志框架 尚硅谷_SpringBoot_web开发-简介 尚硅谷_SpringBoot_web开发-webjars&静态...

    128元尚硅谷Java视频教程_SpringBoot视频教程(上)核心技术篇

    25、尚硅谷_SpringBoot_日志-SpringBoot默认配置 26、尚硅谷_SpringBoot_日志-指定日志文件和日志Profile功能 27、尚硅谷_SpringBoot_日志-切换日志框架 28、尚硅谷_SpringBoot_web开发-简介 29、尚硅谷_...

    尚硅谷Spring boot核心技术篇(上)

    23、尚硅谷_SpringBoot_日志-其他日志框架统一转换为slf4j 24、尚硅谷_SpringBoot_日志-SpringBoot日志关系 25、尚硅谷_SpringBoot_日志-SpringBoot默认配置 26、尚硅谷_SpringBoot_日志-指定日志文件和日志Profile...

    Java SpringBoot课件+源码视频教程

    25、_SpringBoot_日志-SpringBoot默认配置 8 I. H$ s/ I' {- P0 |2 R1 Y 26、_SpringBoot_日志-指定日志文件和日志Profile功能 27、_SpringBoot_日志-切换日志框架 28、_SpringBoot_web开发-简介 29、_SpringBoot...

    springboot知识点整理

    4.7 如何修改SpringBoot的默认配置 72 4.8 【实验】CRUD操作 73 4.8.1 默认访问首页 73 4.8.2 登录页面国际化 74 4.8.3 登录 80 4.8.4 拦截器进行登录检查 81 4.8.5 实验要求(没按要求做,不想改了!) 82 4.8.6 ...

    springboot 日志记录插件,开箱即用,包含示例

    2、实现WushigLogSaverProcesser接口,默认需要实现它的saveLog方法,此方法可以获取到当前正在调用的方法的 基本信息,这是线程安全的,并且本插件使用了一个小型的线程池去异步存储日志,不会对方法执行产生延迟...

    SpringBoot新手学习手册

    Actuator 默认映射 46 Spring Loaded不再支持 46 支持Quartz Scheduler 46 OAuth 2.0 支持 46 支持Spring WebFlux 46 版本要求 46 十二、 其他内容 47 12.1、使用@Scheduled创建定时任务 47 12.2、使用@...

    Spring Boot中文文档.rar

    自定义日志配置 26.7.Logback Extensions 26.7.1.特定于配置文件的配置 26.7.2.环境属性 27. JSON 27.1.Jackson 27.2.GSON 27.3.JSON-B 28.开发Web应用程序 28.1.“Spring Web MVC框架...

    springboot学习

    chapter4-2-1:默认日志的配置 chapter4-2-2:使用log4j记录日志 chapter4-2-3:对log4j进行多环境不同日志级别的控制 chapter4-2-4:使用AOP统一处理Web请求日志 chapter4-2-5:使用log4j记录日志到MongoDB chapter...

    springboot参考指南

    自定义日志配置 v. 26. 开发Web应用 i. 26.1. Spring Web MVC框架 i. 26.1.1. Spring MVC自动配置 ii. 26.1.2. HttpMessageConverters Spring Boot参考指南 3 iii. 26.1.3. MessageCodesResolver iv. 26.1.4. 静态...

    xmljava系统源码-spring-boot-example:一个高度可复用的SpringBoot示例工程

    SpringBoot相对于传统的SSM框架的优点是提供了默认的样板化配置,简化了Spring应用的初始搭建过程,如果你不想被众多的xml配置文件困扰,可以考虑使用SpringBoot替代 搭建怎样一个环境 本文将基于Spring官方提供的...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    6.3 日志配置 148 6.4 Profile 配置 148 实战 148 6.5 Spring Boot 运行原理 150 6.5.1 运作原理 153 6.5.2 核心注解 154 6.5.3 实例分析 157 6.5.4 实战 160 第7 章 Spring Boot 的Web 开发 170 7.1 Spring Boot 的...

    spring-boot-demo:springboot 2.1+整合各种技术

    所有的测试用例均在springboot默认生成的测试文件夹下的测试类里 √:完结“”:正在更×:待更 模块快速预览: :常见的设计模式:观察者模式,... :测试配置类条件注解:@ conditional,@ ConditionalOnBean,@...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    6.3 日志配置 148 6.4 Profile 配置 148 实战 148 6.5 Spring Boot 运行原理 150 6.5.1 运作原理 153 6.5.2 核心注解 154 6.5.3 实例分析 157 6.5.4 实战 160 第7 章 Spring Boot 的Web 开发 170 7.1 Spring Boot 的...

    Spring Boot 2.X 实战教程.pdf

    本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第一...默认配置、外部化配置、活动配置、日志配置、开发Web应用程序、Spring Web MVC框架(安装Postman、自定义欢迎页面、Icon、错误页面)、安装...

    Job Plus项目是基于SpringBoot+Vue的轻量级定时任务管理系统+源代码+文档说明

    1. 架构潮流:系统采用SpringBoot+VUE前后端分离,前端单独部署,Nginx负载均衡 2. 接口友好:同时支持swagger2、knife4j两种可视化接口API调试,支持离线接口文档; 3. 任务管理:支持通过Web页面对任务进行CRUD...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    6.3 日志配置 148 6.4 Profile 配置 148 实战 148 6.5 Spring Boot 运行原理 150 6.5.1 运作原理 153 6.5.2 核心注解 154 6.5.3 实例分析 157 6.5.4 实战 160 第7 章 Spring Boot 的Web 开发 170 7.1 Spring Boot 的...

    maku-generator是一款低代码生成器,可根据自定义模板内容,快速生成代码.rar

    优化表单配置,默认勾选全部表单项 优化生成菜单 SQL 文件,可能重名的问题 优化配置,通过设置属性、表单、列表、查询,生成代码 升级 springboot 到 3.0.3 升级 element-plus 到 2.2.32 项目特点 友好的代码结构及...

Global site tag (gtag.js) - Google Analytics