默认日志框架–配置全解
#日志记录
logging:
#日志级别
level:
#可以调整不同目录的日志级别(注意:必须指定包,否则报错)
root: info
com.cd.example.one: trace
com.cd.example.two: debug
com.cd.example.three: info
#日志文件
file:
#日志文件完整路径(包含日志文件名)
name: D:\idea\logs\example-loggin.log
#日志文件目录路径(spring boot默认使用spring.log作为日志文件)
#path: D:\idea\log
#文件大小(默认10MB)
max-size: 10MB
#文件保存周期(默认7天,七天之后就会删除)
max-history: 7
#日志输出格式
pattern:
#在控制台输出的日志格式
console: -%d{yyyy-MM-dd HH:mm:ss} - %clr(%-5level) - [%thread] - %logger{50} -- %clr(%msg) %n
#在文件输出的日志格式
file: '%d{yyyy-MM-dd hh:mm:ss} %-5level [%thread] %logger{50} -- %msg %n'
#spring boot主配置
spring:
#开启控制台日志彩色输出功能
output:
ansi:
enabled: always
日志格式
#日志记录
logging:
#日志输出格式
pattern:
#在控制台输出的日志格式
console: -%d{yyyy-MM-dd HH:mm:ss} - %-5level - [%thread] - %logger{50} -- %msg %n
#在文件输出的日志格式
file: '%d{yyyy-MM-dd hh:mm} %-5level [%thread] %logger{50} -- %msg %n'
日志输出格式:
1) %d
日志输出时间
2) %-5level
日志级别,并且使5个字符靠左对齐(从左显示5个字符宽度)
3) %thread
线程名
4) %logger{50}
日志输出者名字(全类名),最长50个字符,否则按照句点分隔
5) %msg
日志消息
6) %n
换行符
配置日志格式时遇到的异常:
Caused by: while scanning for the next token
found character ‘%’ that cannot start any token. (Do not use % for indentation)
in ‘reader’, line 26, column 14:
console: %d{yyyy-MM-dd HH:mm:ss} %-5level …
异常原因:
yml配置文件中(缩进不能使用%开头),而配置logging.pattern.console属性值时以%开头了,所以报错
解决方案:
使用''
包裹起来 或者 在首个%
前随便加些字符(只要不让%开头即可)
将
logging:
#日志输出格式
pattern:
#在控制台输出的日志格式
console: %d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n
改成
logging:
#日志输出格式
pattern:
#在控制台输出的日志格式
console: '%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n'
或者改成
logging:
#日志输出格式
pattern:
#在控制台输出的日志格式
console: -%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} -- %msg %n
日志级别
1) level有七个级别,由低到高:trace
< debug
< info
< warn
< error
< fatal
< off
2) spring boot默认使用info日志级别,如果我们不配置-则使用默认该级别
3)只有指定级别及更高级别的日志会生效,低于指定级别的日志不会生效
#日志记录
logging:
#日志级别
level:
#可以调整不同目录的日志级别(注意:必须指定包,否则报错)
root: info
com.cd.example.one: trace
com.cd.example.two: debug
com.cd.example.three: info
日志输出到控制台
spring boot日志默认会输出到控制台,所以并不需要我们做过多配置。但不过不喜欢控制台默认日志格式,则可以使用logging.pattern.console
属性配置
#日志记录
logging:
#日志输出格式
pattern:
#在控制台输出的日志格式
console: -%d{yyyy-MM-dd HH:mm:ss} - %-5level - [%thread] - %logger{50} -- %msg %n
控制台输出日志高亮显示
1)控制台输出默认是全黑显示,为了提高可读性,我们可以配置日志高亮显示
2)配置spring.output.ansi.enabled
属性开启控制台彩色输出功能
3)配置控制台日志格式时,使用%clr()
彩色转换器对输出文本着色,也可使用%clr(){颜色}
来指定使用的颜色(如%clr(){blue}
)
#spring boot主配置
spring:
#开启控制台日志彩色输出功能
output:
ansi:
enabled: always
#日志记录
logging:
#日志输出格式
pattern:
#在控制台输出的日志格式
console: -%d{yyyy-MM-dd HH:mm:ss} - %clr(%-5level) - [%thread] - %logger{50} -- %clr(%msg) %n
)注意:输出到文件的日志格是无法高亮的,所以不要使用%clr()
彩色转换器对输出到文件的日志文本着色,不然%clr()
会被转义,看起来有点像乱码的感觉
日志输出到文件
1) 默认情况下,Spring Boot只会在控制台中输出日志信息,不写入日志文件。
2)如果除了在控制台输出外,还想写入日志文件中,则可以设置一个logging.file.name
或logging.file.path
属性
官网有一段描述:
1)如果logging.file.name
和logging.file.path
属性都不指定,那么日志仅在控制台记录。
2)指定logging.file.name
或logging.file.path
属性,日志就会写入日志文件。指定一个属性即可,如果两个都指定,那么只有logging.file.name
属性生效
3)logging.file.name
属性用于指定日志文件完整路径(包含文件名),logging.file.path
属性用于指定日志文件目录路径(不包含文件名,使用spring boot默认日志文件名spring.log
)。
两个属性都是用于将日志记录到日志文件中,那我们该使用哪个属性呢?
1)如果不想使用spring boot默认的日志文件名spring.log
,就使用logging.file.name
属性
2)如果要使用spring boot默认的日志文件名spring.log
,就使用spring.file.path
#日志记录
logging:
#日志文件
file:
#日志文件完整路径(包含日志文件名)
name: D:\idea\logs\example-logging.log
#日志文件目录路径(spring boot默认使用spring.log作为日志文件)
path: D:\idea\logs
#文件大小(默认10MB)
max-size: 10MB
#文件保存周期(默认7天,七天之后就会删除)
max-history: 7
#日志输出格式
pattern:
#在文件输出的日志格式
file: '%d{yyyy-MM-dd hh:mm:ss} %-5level [%thread] %logger{50} -- %msg %n'
3)每天凌晨后,spring boot都会将前一天的日志文件进行打包压缩
来源:CSDN
作者:CD4356
链接:https://blog.csdn.net/weixin_42950079/article/details/104508579