1. 程式人生 > 程式設計 >使用logback遮蔽一些包的日誌

使用logback遮蔽一些包的日誌

在logback.xml中加上該配置,包名如:com.xxx

<logger name="packageName" level="OFF"> </logger>

補充知識:logback,利用java包名對包內所有類定義輸出形式

目的

將java package 中的所有類定義一個輸出logger,定義它的級別,這樣就不用每個類都配置。

測試

配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{MM/dd/yyyy HH:mm:ss} %-5level [%thread%X{sourceThread}]%logger{24} - %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/var/log/admin-manage/log.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>/var/log/admin-manage/log.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
      <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{MM/dd/yyyy HH:mm:ss} %-5level ${version} [%thread]%logger{16} - %msg%n
      </pattern>
    </encoder>
  </appender>

  <logger name="test1" level="info"/>
  <logger name="test2" level="info" additivity="false"/>
  <logger name="test3" level="warn" additivity="false">
    <appender-ref ref="STDOUT"/>
  </logger>
  <logger name="test4" level="warn" >
    <appender-ref ref="STDOUT"/>
  </logger>
  <logger name="com.netease.haitao.LogbackTest" level="warn">
    <appender-ref ref="STDOUT"/>
  </logger>

  <root level="DEBUG">
    <appender-ref ref="STDOUT"/>
  </root>
</configuration>

程式碼

package com.netease.haitao.LogbackTest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * ${todo}
 *
 * @param: $$params$
 * @return $returns$
 * @date $date$ $time$
 */
public class LogBackTestOne {
  private static final Logger logger = LoggerFactory.getLogger(LogBackTestOne.class);

  public static void main(String[] arg) {
//    print("test1");
//    print("test2");
//    print("test3");
//    print("test4");
    print("test4.test5");
  }

  public static void print(String name) {
    //Logger logger = LoggerFactory.getLogger(name);
    logger.debug("debug");
    logger.info("info");
    logger.warn("warn");
    logger.error("error");
  }
}

輸出結果

05/03/2018 09:28:38 WARN [main]c.n.h.L.LogBackTestOne - warn

05/03/2018 09:28:38 WARN [main]c.n.h.L.LogBackTestOne - warn

05/03/2018 09:28:38 ERROR [main]c.n.h.L.LogBackTestOne - error

05/03/2018 09:28:38 ERROR [main]c.n.h.L.LogBackTestOne - error

大家可以注意到,這裡只輸出warn和error級別的資訊,這是因為配置檔案中“logger name=“com.netease.haitao.LogbackTest” level=“warn”” 中定義了日誌級別,並且有root作為一個根級別的日誌輸出節點。

如果我們把name換成其他名字,修改為“logger name=“Test5” level=“warn””,我們看下結果:

05/03/2018 09:24:04 DEBUG [main]c.n.h.L.LogBackTestOne - debug

05/03/2018 09:24:04 INFO [main]c.n.h.L.LogBackTestOne - info

05/03/2018 09:24:04 WARN [main]c.n.h.L.LogBackTestOne - warn

05/03/2018 09:24:04 ERROR [main]c.n.h.L.LogBackTestOne - error

上述結果就是修改後的結果,從這裡看出,所有的日誌資訊都從root這個父節點輸出了,因為root的級別是debug,所有的日誌資訊都打印出來了,這樣說明我們之前配置的java包的測試是成功的,有結果的。

如果專案是基於springboot框架的話,不需要額外引用相關依賴,直接配置logback.xml就可以直接用。

結論

上述測試證明:logger的name可以配置成java包名,這樣可以對包內的所有java類都起作用。幫助簡化配置。

以上這篇使用logback遮蔽一些包的日誌就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。