SLF4J的使用

265 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

前言

大家好,我是掘金新用户小钻风头领,今天是我正式更文的第八天;

市面上的日志框架;

JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....

日志门面 (日志的抽象层)日志实现
JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-loggingLog4j JUL(java.util.logging) Log4j2 Logback

左边选一个门面(抽象层)、右边来选一个实现; 日志门面: SLF4J; 日志实现:Logback;

spring boot选用SLF4j和logback

1,SLF4j使用

1.)如何在系统中使用SLF4j

以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;

给系统里面导入slf4j的jar和 logback的实现jar

 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 ​
 public class HelloWorld {
   public static void main(String[] args) {
     Logger logger = LoggerFactory.getLogger(HelloWorld.class);
     logger.info("Hello World");
   }
 }

图示:image.png每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文件;

2,Spring boot日志关系

依赖关系:

image.png

1.)日志的级别

 Logger logger = LoggerFactory.getLogger(getClass());
 //日志的级别 由低到高 trace>debug>info>warn>error
 //当项目上线后 不想要的日志输出可以调整级别来控制输出 比如调整为info 那么日志就会输出info及以上的日志信息
 logger.trace("这是trace日志");
 logger.debug("这是debug日志");
 //spring boot默认日志级别是info
 logger.info("这是info日志");
 logger.warn("这是warn日志");
 logger.error("这是error日志");
 ​
 在配置文件内调整日志级别:
   logging.level.org.ph.springbootlogging=trace
   指定的是那个包下的日志级别 没有指定的就是用默认的级别 
 在配置文件内指定日志的存放位置:
   logging.file.name=springboot.log    存放在项目目录     新版本
   logging.file.path=d:/springboot.log   存放在具体的位置

2.)指定配置

image.png

用什么日志就在相应的位置写相应的日志配置文件,那么spring boot就不再使用默认的了 更高级的配置:

logback.xml:直接被spring boot识别

logback-spring.xml: 带spring后缀的日志配置文件 ,日志框架就不再自动加载,而是由spring boot框架加载,这样配置文件就可以使用高级特性: ​

 <!--
   日志输出格式:
     %d      :表示时间
     %thread   :表示线程名
     %-5level  :级别从左显示5个字符宽度
     %logger{50}:表示logger名字最长50个字符,否则按照句号分割
     %msg  :日志消息
     %n    :换行符
 -->
 <springProfile name="环境名 支持!dev">
     指定某段配置只在某个环境下有效
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ----> %-5level%logger {50} - %msg%n </pattern>
 </springProfile>
 ​
 <springProfile name="!dev">
     指定某段配置只在某个环境下有效
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ====> [%thrend] ====> %-5level%logger {50} - %msg%n </pattern>
 </springProfile>