JAVA 日誌系統【 logback]

Logback淺析

一、Logback爲取代log4j而生html

     Logback是由log4j創始人Ceki Gülcü設計的又一個開源日誌組件。logback當前分紅三個模塊:logback-core,logback- classic和logback-access。spring

二、Logback的核心對象:Logger、Appender、Layout數據庫

     Logback主要創建於LoggerAppender  Layout 這三個類之上。
apache

     Logger:日誌的記錄器,把它關聯到應用的對應的context上後,主要用於存放日誌對象,也能夠定義日誌類型、級別。Logger對象通常多定義爲靜態常量,如:api

複製代碼

 1 package com.logs; 2  3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5  6 public class MyApp { 7     final static Logger logger = LoggerFactory.getLogger("MyApp.class"); 8     public static void main(String[] args) { 9         10         logger.trace("trace");11         logger.debug("debug str");12         logger.info("info str");13         logger.warn("warn");14         logger.error("error");15     }16 }

複製代碼

     Appender:用於指定日誌輸出的目的地,目的地能夠是控制檯、文件、遠程套接字服務器、 MySQL、 PostreSQL、Oracle和其餘數據庫、 JMS和遠程UNIX Syslog守護進程等。服務器

     Layout:負責把事件轉換成字符串,格式化的日誌信息的輸出。具體的Layout通配符,能夠直接查看幫助文檔。框架

三、Level 有效級別lua

    Logger能夠被分配級別。級別包括:TRACE、DEBUG、INFO、WARN和ERROR,定義於ch.qos.logback.classic.Level類。程序會打印高於或等於所設置級別的日誌,設置的日誌等級越高,打印出來的日誌就越少。若是設置級別爲INFO,則優先級高於等於INFO級別(如:INFO、 WARN、ERROR)的日誌信息將能夠被輸出,小於該級別的如DEBUG將不會被輸出。爲確保全部logger都可以最終繼承一個級別,根logger老是有級別,默認狀況下,這個級別是DEBUG。spa

四、 三值邏輯hibernate

   Logback的過濾器基於三值邏輯(ternary logic),容許把它們組裝或成鏈,從而組成任意的複合過濾策略。過濾器很大程度上受到Linux的iptables啓發。這裏的所謂三值邏輯是說,過濾器的返回值只能是ACCEPT、DENY和NEUTRAL的其中一個。

若是返回DENY,那麼記錄事件當即被拋棄,再也不通過剩餘過濾器;

若是返回NEUTRAL,那麼有序列表裏的下一個過濾器會接着處理記錄事件;

若是返回ACCEPT,那麼記錄事件被當即處理,再也不通過剩餘過濾器。

五、Filter 過濾器

    Logback-classic提供兩種類型的過濾器:常規過濾器和TuroboFilter過濾器。Logback總體流程:Logger 產生日誌信息;Layout修飾這條msg的顯示格式;Filter過濾顯示的內容;Appender具體的顯示,即保存這日誌信息的地方。

六、具體使用案例

     Java項目中通常都會應用好比struts、spring、hibernate等開源框架,而這些框架不少是應用log4j記錄日誌的,因此咱們考慮用log4j + slf4j + logback 。這樣咱們須要導入log4j-over-slf4j-1.6.4.jar 、logback-classic-1.0.1.jar 、logback-core-1.0.1.jar 、slf4j-api-1.6.4.jar ,若是你要用到EvaluatorFilter過濾器來過濾日誌Msg中的特殊字符須要導入其依賴包 janino-2.3.2.jar。其logback.xml


Logback淺析
一、Logback爲取代log4j而生
     Logback是由log4j創始人Ceki Gülcü設計的又一個開源日誌組件。logback當前分紅三個模塊:logback-core,logback- classic和logback-access。
二、Logback的核心對象:Logger、Appender、Layout
     Logback主要創建於Logger、Appender 和 Layout 這三個類之上。
     Logger:日誌的記錄器,把它關聯到應用的對應的context上後,主要用於存放日誌對象,也能夠定義日誌類型、級別。Logger對象通常多定義爲靜態常量,如:
 1 package com.logs; 2  3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5  6 public class MyApp { 7     final static Logger logger = LoggerFactory.getLogger("MyApp.class"); 8     public static void main(String[] args) { 9         10         logger.trace("trace");11         logger.debug("debug str");12         logger.info("info str");13         logger.warn("warn");14         logger.error("error");15     }16 }
     Appender:用於指定日誌輸出的目的地,目的地能夠是控制檯、文件、遠程套接字服務器、 MySQL、 PostreSQL、Oracle和其餘數據庫、 JMS和遠程UNIX Syslog守護進程等。
     Layout:負責把事件轉換成字符串,格式化的日誌信息的輸出。具體的Layout通配符,能夠直接查看幫助文檔。
三、Level 有效級別
    Logger能夠被分配級別。級別包括:TRACE、DEBUG、INFO、WARN和ERROR,定義於ch.qos.logback.classic.Level類。程序會打印高於或等於所設置級別的日誌,設置的日誌等級越高,打印出來的日誌就越少。若是設置級別爲INFO,則優先級高於等於INFO級別(如:INFO、 WARN、ERROR)的日誌信息將能夠被輸出,小於該級別的如DEBUG將不會被輸出。爲確保全部logger都可以最終繼承一個級別,根logger老是有級別,默認狀況下,這個級別是DEBUG。
四、 三值邏輯
   Logback的過濾器基於三值邏輯(ternary logic),容許把它們組裝或成鏈,從而組成任意的複合過濾策略。過濾器很大程度上受到Linux的iptables啓發。這裏的所謂三值邏輯是說,過濾器的返回值只能是ACCEPT、DENY和NEUTRAL的其中一個。
若是返回DENY,那麼記錄事件當即被拋棄,再也不通過剩餘過濾器;
若是返回NEUTRAL,那麼有序列表裏的下一個過濾器會接着處理記錄事件;
若是返回ACCEPT,那麼記錄事件被當即處理,再也不通過剩餘過濾器。
五、Filter 過濾器
    Logback-classic提供兩種類型的過濾器:常規過濾器和TuroboFilter過濾器。Logback總體流程:Logger 產生日誌信息;Layout修飾這條msg的顯示格式;Filter過濾顯示的內容;Appender具體的顯示,即保存這日誌信息的地方。
相關文章
相關標籤/搜索