SpringBoot 03 ~ 日志系统

业内的日志框架实在是太多了,很多公司都在出自己的日志框架,不过对于大多数Java开发人员来说,log4j和logback应该是最熟悉的,而log4j和logback都是日志的实现产品,实现的接口我们一般称为门面,这两个实现的门面就是大名鼎鼎的slf4j

一、一统天下的Slf4j

  1. 对于log4j和logback等与Slf4j的关系?还是有图:


    SpringBoot 03 ~ 日志系统_第1张图片
    清清白白的Slf4j
  2. 一个项目,里面的日志框架五花八门,什么都有,还好有秦始皇:Slf4j,是他一统天下,不信?有图来证:


    SpringBoot 03 ~ 日志系统_第2张图片
    秦始皇一统天下

二、SpringBoot中的日志系统

  1. 通过对于SpringBoot的日志进行分析,发现SpringBoot中使用的是Slf4j+logback的方式实现的下图就是从项目中截图出来的:


    SpringBoot 03 ~ 日志系统_第3张图片
    SpringBoot日志框架依赖图
  2. 其中:
    • jcl-over-slf4j:用来把common-logging的输出定向到slf4j;
    • log4j-over-slf4j:用来把log4j的输出定向到slf4j;
    • jul-to-slf4j:用来把java.util.logging的输出定向到slf4j;
  3. 反观上面三个jar,真的是赤裸裸的偷天换日!!!当然,在引入原生的jar的时候需要exclude自带的依赖jar;

三、SpringBoot中日志配置

  1. 使用方式和log4j的方式很像,在application.properties中指定logging的各种属性即可
  2. 可以指定每个包的日志级别
  3. 常用的有,可参考官方文档,也可以使用占位符:
    logging.level.=
    logging.file=
    logging.path= # 注意, file和path对于路径有一定的冲突性
    logging.pattern.console= # 控制台日志格式
    logging.pattern.file= # 文件中日志格式
    
  4. 格式模型: %d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n
    • %d:日期时间;
    • %thread:线程名;
    • %‐5level:级别从左显示5个字符宽度;
    • %logger{50} :logger名字最长50个字符,否则按照句点分割;
    • %msg:日志消息;
    • %n:换行符;
  5. 具体的配置参考官方文档

四、自定义配置文件

  1. 只需要把自己的配置文件:logback.xml放在配置文件的路径上,系统就会自动加载;
  2. 而在正常的开发中我们通常会使用logback.spring.xml,这样做的好处就是能够结合Profile,即日志配置的环境隔离;官方文档中记述的很详细;

你可能感兴趣的:(SpringBoot 03 ~ 日志系统)