一、springboot日志配置
1. 默认日志 Logback
默认情况下,Spring Boot会用Logback来记录日志,并以INFO级别输出到控制台。
2. 文件输出
如果要编写除控制台输出之外的日志文件,则需在 application.properties 中设置 logging.file 或 logging.path 属性。
logging.file ,设置文件,可以是绝对路径,也可以是相对路径。如: logging.file=my.log
logging.path ,设置目录,会在该目录下创建 spring.log 文件,并写入日志内容
注:二者不能同时使用,如若同时使用,则只有 logging.file 生效
3. 级别控制
所有支持的日志记录系统都可以在 Spring 环境中设置记录级别(例如在 application.properties 中)
格式为:logging.level.* = LEVEL
logging.level :日志级别控制前缀,*为包名或Logger名
LEVEL :选项 TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
logging.level.com.dudu=DEBUG
logging.level.root=WARN
4. 自定义日志配置
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载
- Logback: logback-spring.xml, logback.xml
Spring Boot 官方推荐优先使用带有 -spring 的文件名作为你的日志配置(如使用 logback-spring.xml ,而不是 logback.xml ),命名为 logback-spring.xml 的日志配置文件, spring boot 可以为它添加一些 spring boot 特有的配置项。
默认的命名规则,并且放在 src/main/resources 下面即可
如果你即想完全掌控日志配置,但又不想用 logback-spring.xml 或者logback.xml作为 Logback 配置文件的名字, application.yml 可以通过 logging.config 属性指定自定义的名字:
logging.config=classpath:logging-config.xml
当没有配置时,使用默认配置。
二、logback-spring.xml配置文件
1. 根节点configuration
- scan:当此属性设置为 true 时,配置文件如果发生改变,将会被重新加载,默认值为 true 。
- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当 scan 为 true 时,此属性生效。默认的时间间隔为1分钟。
- debug:当此属性设置为 true 时,将打印出 logback 内部日志信息,实时查看 logback 运行状态。默认值为 false 。
2. root节点
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。
默认是INFO。
可以包含零个或多个元素,标识这个appender将会添加到这个loger。
3. property节点
用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。
4. appender节点
appender用来格式化日志输出节点,有两个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。
可以看到 layout 和 encoder ,都可以将事件转换为格式化后的日志记录,但是控制台输出使用 layout ,文件输出使用 encoder 。
5. loger节点
<loger> 用来设置某一个包或者具体的某一个类的日志打印级别、以及指定 <appender> 。 <loger> 仅有一个 name 属性,一个可选的 level 和一个可选的 addtivity 属性。
name :用来指定受此loger约束的某一个包或者具体的某一个类。
level :用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前loger将会继承上级的级别。
addtivity :是否向上级loger传递打印信息。默认是true。
日志的传递属性需要特别注意,默认情况下,该属性为true,配置不合理时,会出现重复的日志输出。
通过loger,可以为特定的包设置不同的日志级别,有利于有针对性地输出特定环境的日志信息。