java項目日志系統的總結



### 日志系統歸類以及關系

常用的日志框架: slf4j、logback 、log4j、log4j2、JUL(java util logging)、jboss-logging、JCL(jakarta common logging)

  1. log4j: 最開始的一個日志系統。

  2. JUL: jdk自帶的日志系統

  3. jboss-logging: jboss公司的日志系統

  4. JCL: apache 開源的日志框架

  5. slf4j: 基於門面模式的一個對日志框架進行抽象的接口(類似於JDBC驅動)

  6. logback: 是基於slf4j接口進行實現的一個具體的日志系統

  7. log4j2: 同樣是基於slf4j接口實現的一個具體日志系統,該系統使用了disruptor庫,在異步的情況下,性能提高很多


日志的三個組件

Logger

一個日志系統可以有多個Logger,可以根據自己的情況配置,一個logger可以有多個appender

Appender

代表的是日志的輸出目的地。可以輸出到Console, File, JDBC, JMS ,Kafka ,NOSQL, Socket等。 它可以分為異步Appender 和非異步Appender

Layout

Layout:作用為控制輸出流的格式。可以為Parttern格式,JSON格式,HTML格式,CSV格式,XML格式等。

	        <PatternLayout >
                <Charset>UTF-8</Charset>
				<!-- 時間  類型 線程 文件位置  具體的日志消息 換行-->
                <Pattern>%d  %p  %c{1.}  [%t]  %F  %m  %n</Pattern>
            </PatternLayout>


slf4j的使用

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


public class LoggerTest {
    private static final Logger LOG = LoggerFactory.getLogger(LoggerTest.class);

    public void test() {
        //日志級別從低到高:
        //trace < debug < info < warn < error
        LOG.trace(" trace log");
        LOG.debug(" debug log");
        LOG.info(" info log");
        LOG.warn(" warn log");
        LOG.error(" error log");
    }
}


項目中構建日志系統


使用slfj4抽象接口來編程,這樣不用關系底層的實現是什么,只需要最后配置需要的種類即可。

注意:在構建項目的時候,通常會使用第三方的框架,但是多個第三方框架可能會使用不同的日志系統,為了統一日志,可以使用如下步驟.

統一日志框架步驟:

  1. 將第三方框架中的日志系統排除掉

    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</artifactId>
    			<exclusions>
    				<exclusion>
    					<groupId>commons-logging</groupId>
    					<artifactId>commons-logging</artifactId>
    				</exclusion>
    			</exclusions>
    		</dependency>
    
  2. 用中間適配包來替換原來的日志框架

  3. 導入我們需要的slf4j實現



### 使用例子


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM