Logback 日志框架使用详解

所谓日志,能够描述系统运行状态的所有事件都可以称作为日志。所谓日志框架就是一套能实现日志输出的工具包,并且可以根据需求携带上下文定制输出格式、定制输出目标、运行时选择性输出、可灵活配置等等。

在Java开发中,常用的日志记录框架有 JUL、JCL、Log4J、SLF4J、LogBack。这些日志记录框架各有各的特点,各有各的应用场景。


优秀的日志框架肯定是一个日志门面加上一个日志实现:

常见的日志门面:JCL,SLF4J

常见的日志实现:Log4J,JUL,Logback

(SLF4J,Log4j,Logback 的作者都是同一个人)


jul:JDK自带的log框架

使用起来也很简单,我们的主角并不是JUL,所以简单介绍一下用法:

public class JDKLogDemo {

  public static void main(String[] args) {
    Logger logger = Logger.getLogger(JDKLogDemo.class.getName());
    logger.info("info");
    logger.warning("warning");
  }

}

jul 的优点是使用起来非常简单,直接在JDK当中就能用,但是实现过于简陋,拓展性差,很少使用。


Logback log获取

获得 logger ,注意是当前类的class

  private final Logger logger = LoggerFactory.getLogger(LogbackDemo.class);

但是每个类都得写这么一行很麻烦,我们还有注解的解决方法,打上lombok 的注解

@Slf4j

这样一来 直接 使用  log 就可以了。


Logback 配置

需求是 天滚动,按照 info 和 error 分别输出

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- 控制台日志输出 -->
  <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} %msg%n
      </pattern>
    </layout>
  </appender>


  <!--info 日志配置-->
  <!-- 因为每天都要输出,所以是一个滚动输出,所以是RollingFileAppender -->
  <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--配置过滤器-->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <!--如果命中 error 则禁止输出-->
      <onMatch>DENY</onMatch>
      <!--反之不是 error 则输出log-->
      <onMismatch>ACCEPT</onMismatch>
    </filter>
    <encoder>
      <pattern>
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} %msg%n
      </pattern>
    </encoder>
    <!--滚动策略 按照时间来滚动-->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--路径  路径直接加上时间 %d -->
      <fileNamePattern>/Users/chenhao/Work/log/info.%d.log</fileNamePattern>
    </rollingPolicy>
  </appender>


  <!--error 日志配置-->
  <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <!--配置过滤器-->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>ERROR</level>
    </filter>
    <encoder>
      <pattern>
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} %msg%n
      </pattern>
    </encoder>
    <!--滚动策略-->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--路径-->
      <fileNamePattern>/Users/chenhao/Work/log/error.%d.log</fileNamePattern>
    </rollingPolicy>
  </appender>


  <!--配置好上面的配置后,指定在root info级别下只用此配置-->
  <root level="info">
    <appender-ref ref="consoleLog"/>
    <appender-ref ref="fileInfoLog"/>
    <appender-ref ref="fileErrorLog"/>
  </root>

</configuration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值