说明:
Java的日志管理有点乱啊,最开始Java是没有日志这一块的,后有某一牛人开发了 log4j 这一日志管理模块,大家高兴了,都在用,也很好用。据说该牛人想把 log4j 合成到Java的下一个版本中,但没想到人家没看得起他,拒绝了这一要求,还自己开发了一套日志模块到 java.util.logging 包中,想要顶替 log4j。问题是Java自己开发的并不比 log4j 好用啊。因此大家还是用 log4j 的多。后 log4j 被 apache 买断,问题是买断后该牛人还想继续升级 log4j,想做个统一的日志门面,把市场上的日志统一起来。apache却没这想法,因此该牛人跳出apache,自己单干。由于 log4j 毕竟太老了,运行效率不佳,该牛人改进了 log4j 的代码,极大的提高了效率,改名叫 logback,同时又开发出日志门面 self4j ,它可以把市场上所有的日志统一起来,不管你用哪种日志,都可以用 self4j 进行转换,不需要更改代码。这个好啊!Spring Boot就是内置 logback,只要你引用 spring-boot-starter-web 依赖就可以用 logback 与 self4j 了。而apache也开发出来log4j的下一个版本,叫log4j2,这是另一批人开发的,与牛人无关了。因此我这里使用 self4j + logback 开发日志。
代码:
application.yml配置
#===日志配置===#
logging:
#日志级别(系统默认info)
level:
#修改本项目包内所有类的默认输出级别
com.example.template: debug
#日志输出模式
pattern:
#控制台输出模式(%d代表日期,%-5level表示级别从左显示 5 个字符宽度,%thread代表线程名,%logger{50}表示 Logger 名字最长 50 个字符,[%file:%line]表示哪个类文件和第几行,%msg代表日志消息,%n代表换行。)
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - [%file:%line]:%msg%n'
#文件输出模式
file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - [%file:%line]:%msg%n'
#日志文件
file:
#文件名
name: d:/logs/springboot-template/springboot-template.log
#日志归档(仅适用于Logback,其他需要自定义配置文件)
logback:
#滚动文件日志
rollingpolicy:
#日志归档的文件名模式(默认就行模式,压缩的)
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
#归档前日志文件的最大尺寸
max-file-size: 500MB
#归档日志保留天数
max-history: 7
其实这些已经足够用了,没必要另外单独配置日志文件。