spring boot2.x日志配置
请参看spring boot官方文档请参看github代码一.简介1.Spring Boot使用Commons Logging进行所有内部日志记录,但是使底层日志实现保持打开状态。为Java Util Logging、Log4J2和Logback提供了默认配置。在每种情况下,记录器(loggers)都预先配置为使用控制台输出,同时还提供可选文件输出。2.默认情况下,如果使用"Starters",则
请参看spring boot官方文档
请参看github代码
一.简介
1.Spring Boot使用Commons Logging进行所有内部日志记录,但是使底层日志实现保持打开状态。为Java Util Logging、Log4J2和Logback提供了默认配置。在每种情况下,记录器(loggers)都预先配置为使用控制台输出,同时还提供可选文件输出。
2.默认情况下,如果使用"Starters",则使用Logback进行日志记录。还包括适当的Logback路由,以确保使用Java Util Logging,Commons Logging,Log4J或SLF4J的依赖库(dependent libraries)都能正常工作。
3.Java有很多日志框架可用。通常,您不需要更改日志依赖项,Spring boot默认值也可以正常工作。
4.将应用程序部署到servlet容器或应用程序服务器时,通过Java Util Logging API执行的日志记录不会路由到应用程序的日志中。这样可以防止由容器或已部署到容器的其他应用程序执行的日志出现在应用程序的日志中。[这句并不是很理解]
二.日志格式
1.Spring Boot的默认日志输出类似于以下示例,输出以下项目:
- 日期和时间
- 日志级别:ERROR,WARN,INFO,DEBUG,TRACE
- 进程ID
- 线程名:用方括号括起来
- 记录器名称(Logger name):这通常是源类名(通常缩写)
- 日志消息
三.控制台输出
默认的日志配置在写入消息时将消息回显到控制台。默认情况下,会记录ERROR级别、WARN级别和INFO级别的消息。
四.文件输出
1.默认情况下,Spring boot只记录到控制台,不写入日志文件。如果除了控制台输出外还想写入日志文件,则需要设置一个logging.file.name或logging.file.path属性(例如在application.properties中)
2.Log files rotate when they reach 10 MB,并且与控制台输出一样,默认情况下会记录ERROR级别、WARN级别和INFO级别的消息。
四.File Rotation
如果您使用的是Logback,则可以使用application.properties或application.yaml文件微调日志旋转设置(fine-tune log rotation settings)。对于所有其他日志系统,您需要自己直接配置rotation settings(例如,如果您使用Log4J2,则可以添加log4j.xml文件)。
含义 | |
---|---|
logging.logback.rollingpolicy.file-name-pattern | 用于创建日志档案的文件名模式。 |
logging.logback.rollingpolicy.clean-history-on-start | 是否应在应用程序启动时进行日志归档清理。 |
logging.logback.rollingpolicy.max-file-size | 归档前日志文件的最大大小。 |
logging.logback.rollingpolicy.total-size-cap | 删除日志档案之前可以使用的最大大小。 |
logging.logback.rollingpolicy.max-history | 保留日志存档的天数(默认为7)。 |
五.日志级别
所有受支持的日志系统都可以通过使用logging.level.在Spring环境中设置记录器级别(例如,在application.properties中)。根记录器可以使用logging.level.root
logging.level.root=warn
logging.level.org.springframework.web=debug
六.日志组
1.能够将相关的记录器分组在一起,这样就可以同时配置所有记录器,这通常很有用。
2.Spring Boot包含以下预定义的日志记录组,它们可以直接使用:
七.自定义日志配置
1.可以通过在类路径中包含适当的库来激活各种日志记录系统,并且可以通过在类路径的根目录中或在以下Spring环境属性(logging.config)指定的位置提供适当的配置文件来进一步定制这些日志记录系统。
2.根据您的日志记录系统,将加载以下文件:
3.如果可能的话,我们建议您在日志配置中使用-spring变量(例如,logback-spring.xml而不是logback.xml)。如果使用标准配置位置,Spring不能完全控制日志初始化。
八.Logback扩展
1.Spring Boot包括许多对Logback的扩展,这些扩展可以帮助进行高级配置。您可以在配置文件logback-spring.xml中使用这些扩展。由于标准的logback.xml配置文件加载得太早,因此不能在其中使用扩展。您需要使用logback-spring.xml或定义一个logging.config属性。
2.其余略
九.logback-spring.xml示例
<?xml version="1.0" encoding="UTF-8"?>
<!-- 根节点<configuration>,包含下面三个属性:
scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true">
<!-- 日志存放路径 -->
<property name="log.path" value="./logs"/>
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 输出到文件 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/sys-info_%i.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- maxFileSize:这是活动文件的大小,默认值是10MB,本篇设置为10KB,只是为了演示 -->
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/%d{yyyy-MM-dd}/sys-error_%i.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- maxFileSize:这是活动文件的大小,默认值是10MB,本篇设置为10KB,只是为了演示 -->
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.mashirro.tacocloud.repository" level="debug"/>
<logger name="com.mashirro.tacocloud.controller.DesignTacoController" level="debug"/>
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn"/>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
</configuration>
更多推荐
所有评论(0)