日志实现框架
常见框架:
- JUL
- Logbac
- Log4j
- Log4j2
日志实现的抽象层
避免代码的改动影响用户的使用, 常见的:
- JCL
- SLF4J
日志发展历程
- JDK1.3及以前, 通过System.(out | err).println打印, 存在巨大缺陷
- 解决系统打印缺陷问题出现log4,2015年8月停止更新
- 受到log4j影响, SUN公司推出java.util.logging即JUL
- 由于存在两个系统实现, 解决兼容性问题; 推出commons-logging即JCL但存在一定的缺陷
- log4j作者推出slf4j,功能完善兼容性好,成为业界主流
- log4j作者在推出log4j后进行新的改进思考推出logback
- log4j2对log4j的重大升级, 修复已知缺陷,极大提升性能
- 最佳组合:
slf4j + logback
(springboot使用), 或者slf4j + log4j2
日志源码解析
日志实现寻址
日志配置动手实践
SpringBoot日志
日志架构
日志使用方式
- Logger logger = LoggerFactory.getLogger(xx.class)
- logger.level()
日志配置
- scan: 当设置为true时, 配置文件若发生改变, 将会重新加载
- scanPeriod 扫描时间间隔, 若没给出时间单位默认为毫秒
- debug: 若设置为true,将打印出logback内部日志信息
configuration子节点
- contextName: 上下文名称
- property: 属性配置
- appender: 格式化日志输出
- root: 全局日志输出设置
- logger: 具体包或子类输出设置
configuration上下文属性配置
- contextName:用来区分不同应用程序的记录,默认为default
- name: 变量名称 value: 变量值
appender配置
常用的pattern介绍
- logger {length}: 输出日志的logger名, 可有一个整形参数,功能是缩短logger名
- contextName | cn: 上下文名称
- date {pattern}; 输出日志的打印时间, 模式语法与
java.text.SimpleDateFormat
兼容 - p/le/level:日志级别
- M/method: 输出日志的方法名
- r/relative: 从程序启动到创建日志记录的时间
- m/msg/message: 程序提供的信息
- n: 换行符