SpringBoot日志配置

SpringBoot日志配置

在前一个项目simple-boot-demo项目中配置日志相关。

SpringBoot日志依赖为:spring-boot-starter-logging,不过对于web项目,已经引入了spring-boot-starter-web,默认已经自带了日志的spring-boot-starter-logging,已经默认引入了logback实现,只需要配置application.yml即可。

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback.version}</version>
</dependency>

Spring内部使用Commons Logging,SpringBoot项目日志实现可以用log4j2,logback,JDK (Java Util Logging)等。

参考文档:

https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/howto.html#howto-logging

https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/spring-boot-features.html#boot-features-logging

使用默认logback

配置日志级别

level是个map,配置不同的日志名称的级别,一般情况下都是配置些包名称就可以了,因为一般都是用类名作为日志名称,常见写法如下:

private static final Logger logger = LoggerFactory.getLogger(SomeClass.class);
logging:
  level: # level是个map,配置不同的日志名称的级别
    root: error
    org.springframework: debug

配置文件日志

默认配置下只会在控制台输出日志,没有文件日志,可以配置文件名来控制文件输出。

日志文件配置:

logging.file.name logging.file.path 示例 描述
(none) (none) 只有控制台日志
指定文件名 (none) my.log 指定文件名,相对路径的话在当前目录,也可以是绝对路径
(none) 指定文件目录 /var/log 指定相对或绝对目录,默认文件名为:spring.log

日志配置示例:

logging:
  file:
    name: C:/simple-logs/simple-boot-demo.log

文件日志详情

另外一些文件日志配置如下,主要配置文件大小分隔、历史记录、输出格式等,这些配置在IDE中都有提示输入:

logging:
  file:
    name: C:/simple-logs/simple-boot-demo.log
    max-size: 10MB # 单个文件大小
    max-history: 7 # 最大历史天数7天
    total-size-cap: 0B # 总文件大小限制0MB,无限制
  patten:
    file: %d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
  level: # level是个map,配置不同的日志名称的级别
    root: error
    org.springframework: debug

注意:这些配置在使用自定义的配置文件logging.config=classpath:logback-spring.xml时,如果include引入sping-boot项目中的logback配置xml片段,这些application.yml中的配置也是有效的,而且level配置还是优先于配置文件

日志分组配置

日志可以分组配置,针对部分日志名称定义一个分组,可以统一配置此分组的级别:

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
logging.level.tomcat=DEBUG

SpringBoot内置的日志分组:

Name Loggers
web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener

使用自定义logback

SpringBoot如果要使用自定义的logback作为日志实现,需要编写logback.xml,但是引入logback之后,logback会自动查找logback.xml,因此不能把名字定义为logback.xml,否则可能早于SpringBoot初始化,造成一些配置无效问题。

自定义配置文件

使用logback-spring.xml或者使用loging.config来指定配置文件(默认名字为logback-spring.xml的文件springboot会自动获取到,自定义名字需要手动配置):

logging:
  config: classpath:demo-logback.xml

logback配置文件

在spring-boot项目的jar包中,spring为了简化配置,已经在项目中内置了一些logback的配置片段,方便使用include方式引入,打开可以看到内容是用<included></include>包裹,因此自定义配置文件logback.xml的时候直接include即可。

配置片段路径:org/springframework/boot/logging/logback/

文件名 说明
defaults.xml 默认的一些日志配置
console-appender.xml 控制台输出appender等
file-appender.xml 文件输出appender等
base.xml 基础配置,包含上面的三个配置文件,兼容老版本springboot的配置

典型logback.xml配置文件如下,其中引用了spring-boot提供的xml片段:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="debug">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
    <logger name="org.springframework.web" level="ERROR"/>
</configuration>

上面的配置是文件取名为demo-logback.xml,方便引入。

配置application.yml:

logging:
  file:
    name: C:/simple-logs/simple-boot-demo.log
    max-size: 100KB # 可以改大小测试生成多个带时间信息的文件
    max-history: 7
    total-size-cap: 0MB
  config: classpath:demo-logback.xml

总结

  1. SpringBoot项目在通常情况下不需要用自定义的logback.xml配置,除非还需要为日志做一些定制(如需要append到logstash等),否则直接使用application.yml配置就足够了。
  2. 自定义logback.xml,最好自定义一个名称或者使用logback-spring.xml
  3. 使用include方式引入spring-boot.jar中的xml的时候,application.yml中很多配置也是有效的。

给TA打赏
共{{data.count}}人
人已打赏
运维

SpringBoot项目数据库访问MySQL

2024-11-19 10:36:20

运维

Spring Boot开启声明式事务

2024-11-19 10:36:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索