默认情况下,Spring Boot会用Logback来记录日志,并以INFO级别输出到控制台。
如果要编写除控制台输出之外的日志文件,则需在 application.properties 中设置 logging.file 或 logging.path 属性。
logging.file ,设置文件,可以是绝对路径,也可以是相对路径。如: logging.file=my.log
logging.path ,设置目录,会在该目录下创建 spring.log 文件,并写入日志内容
注:二者不能同时使用,如若同时使用,则只有 logging.file 生效
所有支持的日志记录系统都可以在 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
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载
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
当没有配置时,使用默认配置。
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。
默认是INFO。
可以包含零个或多个元素,标识这个appender将会添加到这个loger。
用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。
appender用来格式化日志输出节点,有两个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。
可以看到 layout 和 encoder ,都可以将事件转换为格式化后的日志记录,但是控制台输出使用 layout ,文件输出使用 encoder 。
name :用来指定受此loger约束的某一个包或者具体的某一个类。
level :用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前loger将会继承上级的级别。
addtivity :是否向上级loger传递打印信息。默认是true。
日志的传递属性需要特别注意,默认情况下,该属性为true,配置不合理时,会出现重复的日志输出。
通过loger,可以为特定的包设置不同的日志级别,有利于有针对性地输出特定环境的日志信息。