业内的日志框架实在是太多了,很多公司都在出自己的日志框架,不过对于大多数Java开发人员来说,log4j和logback应该是最熟悉的,而log4j和logback都是日志的实现产品,实现的接口我们一般称为门面,这两个实现的门面就是大名鼎鼎的slf4j
一、一统天下的Slf4j
-
对于log4j和logback等与Slf4j的关系?还是有图:
清清白白的Slf4j
-
一个项目,里面的日志框架五花八门,什么都有,还好有秦始皇:Slf4j,是他一统天下,不信?有图来证:
秦始皇一统天下
二、SpringBoot中的日志系统
-
通过对于SpringBoot的日志进行分析,发现SpringBoot中使用的是Slf4j+logback的方式实现的下图就是从项目中截图出来的:
SpringBoot日志框架依赖图
- 其中:
- jcl-over-slf4j:用来把common-logging的输出定向到slf4j;
- log4j-over-slf4j:用来把log4j的输出定向到slf4j;
- jul-to-slf4j:用来把java.util.logging的输出定向到slf4j;
- 反观上面三个jar,真的是赤裸裸的偷天换日!!!当然,在引入原生的jar的时候需要exclude自带的依赖jar;
三、SpringBoot中日志配置
- 使用方式和log4j的方式很像,在application.properties中指定logging的各种属性即可
- 可以指定每个包的日志级别
- 常用的有,可参考官方文档,也可以使用占位符:
logging.level.<package>=<level> logging.file=<log-file> logging.path=<log-path> # 注意, file和path对于路径有一定的冲突性 logging.pattern.console=<pattern> # 控制台日志格式 logging.pattern.file=<pattern> # 文件中日志格式
- 格式模型:
%d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n
-
%d
:日期时间; -
%thread
:线程名; -
%‐5level
:级别从左显示5个字符宽度; -
%logger{50}
:logger名字最长50个字符,否则按照句点分割; -
%msg
:日志消息; -
%n
:换行符;
-
- 具体的配置参考官方文档
四、自定义配置文件
- 只需要把自己的配置文件:logback.xml放在配置文件的路径上,系统就会自动加载;
- 而在正常的开发中我们通常会使用logback.spring.xml,这样做的好处就是能够结合Profile,即日志配置的环境隔离;官方文档中记述的很详细;
网友评论