使用SLF4J作为门面配置日志

引入pom依赖,slf4j为日志门面,简单理解为一个日志接口,本身没有实现不会输出什么,常用的实现有logback、log4j等,这里也引入了它们的依赖

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.21</version>
    </dependency>
    <!--  日志实现  logback 依赖  -->
<!--    <dependency>-->
<!--      <groupId>ch.qos.logback</groupId>-->
<!--      <artifactId>logback-classic</artifactId>-->
<!--      <version>1.1.8</version>-->
<!--    </dependency>-->

<!--  日志实现  log4j  依赖  -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.21</version>
    </dependency>

logback.xml配置:

<configuration>
  <!-- appender是configuration的子节点,是负责写日志的组件。 -->
  <!-- ConsoleAppender:把日志输出到控制台 -->
  <!-- name="STDOUT" 取个名字方便引用 -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d [ %thread ] %-5level (%logger{36}:%line\) - %msg%n</pattern>
      <!-- 控制台使用UTF-8,不要使用GBK,否则会中文乱码   %d %p (%file:%line\)- %m%n-->
      <charset>UTF-8</charset>
    </encoder>
  </appender>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <!--  输出到指定文件  -->
    <file>d:/code/log/test.log</file>
    <encoder>
      <pattern>%d [ %thread ] %-5level %logger{36} - %msg%n</pattern>
      <charset>UTF-8</charset>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <!-- 在日志配置级别的基础上过滤掉info级别以下的日志 -->
      <level>INFO</level>
    </filter>
  </appender>
  <!-- 指定一个包下的日志级别  additivity="false"时能阻止日志向上传递 -->
  <logger name="xyz.lyuan" level="debug" additivity="true"/>
  <root level="error">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
  </root>
</configuration>

log4j.properties配置:

# 全局日志配置
log4j.rootLogger=ERROR, stdout
# 指定包下的日志输出级别
log4j.logger.xyz.lyuan=INFO

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t]  %l - %m %n

在代码中要使用slf4j的api,通过切换pom依赖项就可以切换实际的日志实现了

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class App {
    private static Logger logger = LoggerFactory.getLogger(App.class);
    public static void main(String[] args) {

        logger.trace("TRACE----");
        logger.debug("debug----");
        logger.info("info----");
        logger.warn("warn----");
        logger.error("error----");

        new Thread(() -> {
            logger.trace("TRACE----");
            logger.debug("debug----");
            logger.info("info----");
            logger.warn("warn----");
            logger.error("error----");
        }, "thread-name3423423432423423").start();

    }
}

猜你喜欢

转载自www.cnblogs.com/liuyiyuan/p/13160476.html