1. 程式人生 > >Java 日誌元件slf4j+logback使用例項

Java 日誌元件slf4j+logback使用例項

slf4j

簡介

SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。在使用SLF4J的時候,不需要在程式碼中或配置檔案中指定你打算使用那個具體的日誌系統。

使用步驟

  1. 引入slf4j依賴,這裡以maven專案為例
<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId
>
<version>1.7.22</version> </dependency> </dependencies>
  1. 程式碼編寫記錄日誌語句,示例如下
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * Created by xuyh at 2017年8月24日 下午4:01:57.
 */
public class Main {
    //定義日誌物件
    private static Logger logger = LoggerFactory.getLogger(Main.class);

    public
static void main(String... strings) { //級別為debug的日誌 logger.debug("Hello! debug!"); //級別為info的日誌 logger.info("Hello! info!"); //級別為warn的日誌 logger.warn("Hello! warn!"); //級別為error的日誌 logger.error("Hello! error!"); } }

以上兩步即可記錄日誌了,不過在執行程式之後會出現如下問題:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

說明光引入slf4j還不夠,必須得挑選一個具體的日誌元件實現來完成日誌的記錄,下面介紹一款不錯的日誌實現:logback

logback

logback簡介

Logback是由log4j創始人設計的一個開源日誌元件。logback當前分成三個模組:logback-core,logback-classic和logback-access。logback-core是其它兩個模組的基礎模組。logback-classic是log4j的一個改良版本。

我們這裡的例項使用到logback-classic

使用步驟

  1. 引入slf4j以及logback依賴,這裡以maven專案為例
<dependencies>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.22</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.6</version>
    </dependency>

</dependencies>
  1. classpath中編寫logback的配置檔案logback.xml, 以maven專案為例,logback.xml檔案放在/src/main/resources/路徑中

logback.xml配置例項及註釋詳解

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan:當此屬性設定為true時,配置檔案如果發生改變,將會被重新載入,預設值為true。 
     scanPeriod:設定監測配置檔案是否有修改的時間間隔,如果沒有給出時間單位,預設單位是毫秒。當scan為true時,此屬性生效。預設的時間間隔為1分鐘。
     debug:當此屬性設定為true時,將打印出logback內部日誌資訊,實時檢視logback執行狀態。預設值為false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!-- 上下文變數設定,用來定義變數值,其中name的值是變數的名稱,value的值時變數定義的值。
        通過<property>定義的值會被插入到logger上下文中。定義變數後,可以使“${}”來使用變數。 -->
    <property name="CONTEXT_NAME" value="logback-test" />

    <!-- 上下文名稱:<contextName>, 每個logger都關聯到logger上下文,
        預設上下文名稱為“default”。但可以使用<contextName>設定成其他名字,用於區分不同應用程式的記錄。
        一旦設定,不能修改。 -->
    <contextName>${CONTEXT_NAME}</contextName>

    <!-- <appender>是<configuration>的子節點,是負責寫日誌的元件。
        有兩個必要屬性name和class。
        name指定appender名稱,
        class指定appender的實現類。 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 對日誌進行格式化。 -->
        <encoder>
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%class|%thread|%method|%line|%msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 被寫入的檔名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動建立,沒有預設值。 -->
        <file>${logs.dir}/logback-test.log</file>

        <!-- 當發生滾動時的行為  -->
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 必須包含“%i”例如,假設最小值和最大值分別為1和2,命名模式為 mylog%i.log,會產生歸檔檔案mylog1.log和mylog2.log。還可以指定檔案壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip -->
            <FileNamePattern>${logs.dir}/logback-test.%i.log</FileNamePattern>
            <!-- 視窗索引最小值 -->
            <minIndex>1</minIndex>
            <!-- 視窗索引最大值 -->
            <maxIndex>1</maxIndex>
        </rollingPolicy>

        <!-- 啟用滾動的條件。 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!-- 活動檔案的大小,預設值是10MB -->
            <maxFileSize>30MB</maxFileSize>
        </triggeringPolicy>

        <!-- 對記錄事件進行格式化。 -->
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%class|%thread|%method|%line|%msg%n
            </Pattern>
        </encoder>
    </appender>

    <!-- 特殊的<logger>元素,是根logger。只有一個level屬性,應為已經被命名為"root".
        level:設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設定為INHERITED或者同義詞NULL。預設是DEBUG。
        <root>可以包含零個或多個<appender-ref>元素,標識這個appender將會新增到這個loger。 -->
    <root>
        <level value="WARN" />
        <appender-ref ref="stdout" />
        <appender-ref ref="file" />
    </root>

    <!-- 用來設定某一個 包 或者具體的某一個 類 的日誌列印級別、以及指定<appender>, 
        name:用來指定受此logger約束的某一個包或者具體的某一個類。
        level:用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,還有一個特俗值INHERITED或者同義詞NULL,代表強制執行上級的級別。如果未設定此屬性,那麼當前loger將會繼承上級的級別。 
        additivity:是否向上級logger傳遞列印資訊。預設是true。(這個logger的上級就是上面的root)
        <logger>可以包含零個或多個<appender-ref>元素,標識這個appender將會新增到這個logger。-->
    <logger name="xuyihao.logback.test" level="DEBUG" additivity="true"></logger>

</configuration>
  1. 通過以上配置,在程式執行之後,slf4j會載入logback的日誌實現,然後logback從類路徑中讀取logback.xml檔案中的日誌配置資訊,實現日誌的記錄等功能。

重新執行以上程式,結果如下:

2017-08-24 17:00:22.354|DEBUG|xuyihao.logback.test.Main|main|main|14|Hello! debug!
2017-08-24 17:00:22.354|INFO|xuyihao.logback.test.Main|main|main|15|Hello! info!
2017-08-24 17:00:22.354|WARN|xuyihao.logback.test.Main|main|main|16|Hello! warn!
2017-08-24 17:00:22.354|ERROR|xuyihao.logback.test.Main|main|main|17|Hello! error!

相關推薦

Java 日誌元件slf4j+logback使用例項

slf4j 簡介 SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。在使用SLF4J的時候,不需要在程式碼中或配置檔案中指定你打算使用那個具體的日誌系統。

java日誌元件介紹(common-logging,log4j,slf4jlogback

Log4j Apache的一個開放原始碼專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件、甚至是套介面服務 器、NT的事件記錄器、UNIX Syslog守護程序等;使用者也可以控制每一條日誌的輸出格式;通過定義每一條日誌資訊的級別,使用者能夠更加細緻地控制日誌的生成過程。

java-日誌元件slf4j+logback配置及詳解

文字主要介紹一下slf4j+logback在java工程中的配置,面向的讀者是已經對slf4j+logback有一定了解的同學,不瞭解的同學,請看文章末尾的相關連結。以後會寫一篇介紹slf4j框架的文章,其中會說明logback與之的關係。下面咱們進入正題。

Java日誌元件logback使用:載入非類路徑下的配置檔案並設定定時更新

logback載入非類路徑下的logback配置檔案並設定定時更新 定時重新載入logback配置檔案 logback.xml <configuration scan="true"

Java日誌Slf4j,Log4J,logback原理總結

  幾乎任何應用,一定是需要日誌的。   那麼,面對種類繁多的日誌框架和配置,我們該何去何從?   1.前奏:我是在研究mybatis原始碼的過程中才意識到需要搞明白日誌原理這回事,因為mybatis(和一些其他開源框架,比如rocketmq)都有自己的日誌系統,他們在框架內部都使用的是自己的日誌API,那麼

Java日誌組件logback使用:加載非類路徑下的配置文件並設置定時更新

arc .get courier sprint 日誌配置 microsoft poi con tag Java日誌組件logback使用:加載非類路徑下的配置文件並設置定時更新摘自: https://blog.csdn.net/johnson_moon/article/

Java日誌使用slf4j 配置log4j後,有日誌文件 但日誌文件內容為空

actor 輸出 ole sym ack 拼接 world 輸出參數 %d SLF4J的全稱是Simple Logging Facade for Java,即簡單日誌門面。 SLF4J並不是具體的日誌框架,而是作為一個簡單門面服務於各類日誌框架,如java.util.log

java日誌配置之logback的使用

一 :logback引入 首先引入pom檔案,slf4j+logback需要配合來使用   二:logback.xml配置 如果配置檔案logback.xml 不存在,那麼 logback 預設地會用BasicConfigurator自動對自己進行配

web開發-日誌框架-------slf4j+logback

  參考文章 log橋接工具jcl-over-slf4j使用(專案排除commons-logging依賴的影響) https://blog.csdn.net/javaloveiphone/article/details/52486257 logback的使用和logback.

java日誌SLF4J隨想

原文地址 譯者:劉小劉 本文漫談java中的日誌:以前怎樣使用日誌,以及類似SLF4J的庫為我們帶來了什麼。 日誌是建立軟體時的基本需求之一,常見的用例如: 軟體開發過程中的除錯 生產環境下診斷bug 出於安全目的而跟蹤訪問 建立統計使用的資料 等等 無論用途為何,日誌都應該是詳盡、可配

java日誌詳解--logback

前言 ​ 關於logback這塊,相關的文章比較多,而本人研究也不是比較深入,因此這篇文章只是本人的配置過程以及其他幾篇深入介紹的文章,當作記錄使用,希望能幫到自己和讀者。 正文 對比log4j的優勢: 更快的實現 Logback的核心重

日誌slf4j+logback 的配置與使用

1. 常用日誌元件和選擇 java開發日誌處理是發現和除錯bug所 必不可少的,那麼現在企業中常用的日誌元件有哪些呢,JCL 、 JUL、  SLF4j、Log4j、  Log4j2 、 Logbac

Java日誌 Log4j+slf4j使用

1 Slf4j簡介 SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。按照官方的說法,SLF4J是一個用於日誌系統的簡單Facade,允許終端使用者在部署其應用時使用其所希望的日誌系統。   實際上,SLF4

Java日誌框架——SLF4J

一、基本概念 SLF4J是一個日誌框架抽象層,底下繫結具體的日誌框架,比如說Log4J,Logback,Java Logging API等。SLF4J也有自身的預設實現,但是我們還是主要以日誌框架抽象層的身份使用SLF4J。要使用SLF4J,得包含對"org.slf4j:s

Java日誌知識總結和經常使用組合配置(commons-logging,log4j,slf4j,logback)

ng- binder mono leading black auto erb param 1.2 Log4j Apache的一個開放源碼項目,通過使用Log4j,我們能夠控制日誌信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務 器

【轉】java日誌組件介紹(common-logging,log4j,slf4jlogback

微秒 是把 輸出重定向 gin ons java 循環 框架 log4j.jar common-logging common-logging是apache提供的一個通用的日誌接口。用戶可以自由選擇第三方的日誌組件作為具體實現,像log4j,或者jdk自帶的lo

web專案中如何選擇日誌元件SLF4J、Log4J2、logback

一:SLF4J、Log4J2、logback、Apache log4j元件簡介slf4j譯為簡單日誌門面,是日誌框架的抽象。LogBack和Log4j都是開源日記工具庫,LogBack是Log4j的改良版本,比Log4j擁有更多的特性,同時也帶來很大效能提升。詳細資料可參照下

java日誌組件介紹(jcl,jul,slf4j,logback

查看 關系 方案 不同 運行 stat line www 工程 轉自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的

Java日誌信息存庫(logback篇)

values deb extends 數據連接 trigger 日誌系統 bst update array 一、Logback簡介   Logback是由log4j創始人設計的又一個開源日誌組件。logback當前分成三個模塊:logback-core,logback- c

JAVA日誌框架log4j和slf4j

writer class 基本 鏈接 發送 控制 spa com 內容 1 org.apache.log4j.ConsoleAppender(控制臺) 2 org.apache.log4j.FileAppender(文件) 3 org.apache.log4j.Daily