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的全限定名,该属性比较常使用的是ConsoleAppender、FileAppender、RollingFileAppender、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默认日志配置详解 在Java开发领域,Spring Boot以其简洁、快速的特性深受开发者喜爱。其中,日志管理是任何应用系统不可或缺的一部分,它帮助我们追踪代码执行过程,定位问题,以及进行性能分析。Spring ...
`spring-boot-starter` 是 Spring Boot 的核心组件,它包含了一组默认的依赖项,如 Spring Framework、Spring Boot 自动配置和 Logback 日志系统。启动器(starters)是预定义的依赖集合,用于快速添加功能,比如 `...
9. **自定义日志配置** 如果需要更复杂的配置,可以在项目中添加`logback-spring.xml`或`logback.xml`文件,SpringBoot会自动加载它。在该文件中,你可以完全定制Logback的配置。 10. **日志切换** 在运行时动态...
本项目“业务异常提示处理 springboot+Assert(自定义断言)”着重于利用Spring Boot的特性来构建高效、易维护的业务逻辑,并通过自定义断言提升代码的可读性和可维护性。下面我们将详细探讨这些知识点。 1. **Spring...
默认情况下,Spring Boot会将日志输出到控制台,但可以通过以下配置将其写入文件: ```properties logging.file.name=logs/app.log ``` 对于日志格式,Logback和Log4j2都有各自的配置文件,通常为`logback.xml`和`...
1. `Logger`:负责记录日志信息,可以根据级别(如DEBUG、INFO、WARN、ERROR)控制日志的输出。 2. `Appender`:定义日志输出的目的地,比如控制台、文件、网络等。 3. `Layout`:决定日志信息的格式,如简单的文本...
3. **自定义日志配置** 如果需要更精细的控制,可以在项目的`src/main/resources`目录下创建`logback-spring.xml`或`logback-spring.groovy`文件,以覆盖默认配置。例如,可以添加一个Appender来记录HTTP请求的详细...
本教程将详细介绍如何在Spring Boot中自定义日志配置,特别是通过`logback-spring.xml`文件来实现。 首先,我们需要理解`logback-spring.xml`与传统的`logback.xml`的区别。`logback-spring.xml`是专门为Spring ...
本文将深入探讨Spring Boot的日志配置,包括默认的日志系统、如何更改日志级别、控制台和文件日志的输出以及自定义配置。 首先,Spring Boot 默认使用Logback作为日志记录系统。Logback是一个高效且灵活的日志框架...
可直接复制到项目中使用,不好用不要钱 效果: 1、默认生成最新的两个文件 debug.log 和 error.log 2、每50M自动压缩归档到时间文件夹中,生效时间为30天
配置文件通常位于`src/main/resources`目录下,其中包含了服务器端口、数据库连接信息、日志级别等各种设置。这些配置可以在运行时通过命令行参数或环境变量进行覆盖。 动态配置是Spring Boot的一大亮点,它允许...
它的核心功能包括定义日志级别(如DEBUG、INFO、WARN、ERROR),配置日志输出目的地(控制台、文件、数据库等),以及自定义日志格式。SpringBoot默认使用的是Logback,但通过简单的配置,我们也可以切换到Log4j。 ...
**自定义日志配置**: 若要使用自己的日志配置,可以创建自定义的logback配置文件(如`logback-spring.xml`或`logback-spring.groovy`),并将其放置在类路径的根目录下,SpringBoot会自动识别并应用。同时,也可以...
总结来说,通过结合Spring Boot、Logback和MDC,我们可以轻松地在日志中添加自定义信息,实现链路追踪功能。这不仅有助于在生产环境中快速定位问题,还可以为性能优化和用户体验改进提供有价值的数据。不过,要注意...
对于嵌入式Tomcat,SpringBoot默认会使用它作为Servlet容器。如果需要修改Tomcat的配置,可以在`application.properties`中进行,例如增加最大线程数: ```properties server.tomcat.max-threads=200 ``` Maven的`...
在SpringBoot中,日志系统默认集成了Logback或Log4j2,你可以通过application.properties或application.yml文件来配置日志级别、输出位置等。例如,设置`logging.level.root=INFO`可以将根日志级别设为INFO,`...
SpringBoot配置详解 Spring Boot应用程序 Properties配置详解 Spring Boot是一种基于Java的开源框架,旨在简化基于Spring的应用程序的开发。Spring Boot提供了许多特性,包括自动配置、starter依赖项、外部化配置...
25、尚硅谷_SpringBoot_日志-SpringBoot默认配置 26、尚硅谷_SpringBoot_日志-指定日志文件和日志Profile功能 27、尚硅谷_SpringBoot_日志-切换日志框架 28、尚硅谷_SpringBoot_web开发-简介 29、尚硅谷_...