天天看點

log4j引入依賴日志等級元件執行個體

引入依賴

<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.3</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
           

日志等級

  • fatal 指出每個嚴重的錯誤事件将會導緻應用程式的退出。
  • error 指出雖然發生錯誤事件,但仍然不影響系統的繼續運作。
  • warn 表明會出現潛在的錯誤情形。
  • info 一般和在粗粒度級别上,強調應用程式的運作全程。
  • debug 一般用于細粒度級别上,對調試應用程式非常有幫助。預設級别
  • trace 是程式追蹤,可以用于輸出程式運作中的變量,顯示執行的流程。
特殊的日志等級       	
 - OFF,可用來關閉日志記錄。 	 
 - ALL,啟用所有消息的日志記錄。
           

注:優先級從高到低為 FATAL > ERROR > WARN > INFO > DEBUG > TRACE

元件

Logger

指定日志的輸出等級
           

Logger的繼承

一個Log可以繼承另一個Log的屬性(日志等級,appender等),根據Log的命名判斷繼承關系,例如:命名為“com.example.person.Man"的Log就繼承自命名為“com.example.person”的Log的全部屬性,Log4J中存在一個特殊的名為“RootLogger”的Log,是所有Log的根。
           

Appender

指定日志的輸出方式(輸出到控制台、檔案,資料庫等)
           

常用的Appender有以下幾種:

輸出端類型 作用
ConsoleAppender 将日志輸出到控制台
FileAppender 将日志輸出到檔案中
DailyRollingFileAppender 将日志輸出到一個日志檔案,并且每天輸出到一個新的檔案
RollingFileAppender 将日志資訊輸出到一個日志檔案,并且指定檔案的尺寸,當檔案大小達到指定尺寸時,會自動把檔案改名,同時産生一個新的檔案
JDBCAppender 把日志資訊儲存到資料庫中

Layout

指定日志資訊的輸出格式
           

常用的Layout有以下幾種:

格式化器類型 作用
HTMLLayout 格式化日志輸出為HTML表格形式
SimpleLayout 簡單的日志輸出格式化,列印的日志格式為(info - message)
PatternLayout 最強大的格式化期,可以根據自定義格式輸出日志,如果沒有指定轉換格式,就是用預設的轉換格式

執行個體

# RootLogger配置
log4j.rootLogger = trace, console

# 自定義Logger,都會繼承RootLogger中配置的console,日志等級都會被覆寫
log4j.logger.top.onefine = info, file
log4j.logger.org.apache = error

# 指定控制台日志輸出的appender
log4j.appender.console = org.apache.log4j.ConsoleAppender
# 指定消息格式layout
#log4j.appender.console.layout = org.apache.log4j.SimpleLayout
#log4j.appender.console.layout = org.apache.log4j.HTMLLayout
#log4j.appender.console.layout = org.apache.log4j.xml.XMLLayout
# 自定義消息輸出格式及配置
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern =  %d [%t] %-5p [%c] - %m%n

## 日志檔案輸出的appender對象
log4j.appender.file = org.apache.log4j.FileAppender
# 指定消息格式layout
log4j.appender.file.layout = org.apache.log4j.PatternLayout
# 指定消息格式的内容
log4j.appender.file.layout.conversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n
# 指定日志檔案儲存路徑
log4j.appender.file.file = d:/logs/log4j.log
# 指定日志檔案的字元集
log4j.appender.file.encoding = UTF-8
           
package top.onefine;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.helpers.LogLog;
import org.junit.Test;

public class Log4jTest {

    @Test
    public void testQuick() {
    
        //Logger名為 top.onefine.Log4jTest,繼承自log4j.properties中配置的命名為"top.onefine"的Log,日志等級為info,輸出方式有:console,file
        Logger logger = Logger.getLogger(Log4jTest.class);

        logger.fatal("fatal "); // 嚴重錯誤,一般會造成系統崩潰和終止運作
        logger.error("error "); // 錯誤資訊,但不會影響系統運作
        logger.warn("warn "); // 警告資訊,可能會發生問題
        logger.info("info "); // 程式運作資訊,資料庫的連接配接、網絡、IO操作等
        logger.debug("debug "); // 調試資訊,一般在開發階段使用,記錄程式的變量、參數等
        logger.trace("trace "); // 追蹤資訊,記錄程式的所有流程資訊
        
		//Logger名為 org.apache.log4j.Logger,繼承log4j.properties中配置的命名為"com.apache"的Log,日志等級為error,輸出方式有:console
        Logger logger2 = Logger.getLogger(Logger.class);
         
        logger2.fatal("fatal logger2"); // 嚴重錯誤,一般會造成系統崩潰和終止運作
        logger2.error("error logger2"); // 錯誤資訊,但不會影響系統運作
        logger2.warn("warn logger2"); // 警告資訊,可能會發生問題
        logger2.info("info logger2"); // 程式運作資訊,資料庫的連接配接、網絡、IO操作等
        logger2.debug("debug logger2"); // 調試資訊,一般在開發階段使用,記錄程式的變量、參數等
        logger2.trace("trace logger2"); // 追蹤資訊,記錄程式的所有流程資訊
	}
}
           

控制台輸出:

2020-05-17 20:58:13,203 [Test worker] FATAL [top.onefine.Log4jTest] - fatal
2020-05-17 20:58:13,206 [Test worker] ERROR [top.onefine.Log4jTest] - error
2020-05-17 20:58:13,207 [Test worker] WARN  [top.onefine.Log4jTest] - warn
2020-05-17 20:58:13,207 [Test worker] INFO  [top.onefine.Log4jTest] - info
2020-05-17 20:58:13,208 [Test worker] FATAL [org.apache.log4j.Logger] - fatal logger2
2020-05-17 20:58:13,208 [Test worker] ERROR [org.apache.log4j.Logger] - error logger2
           

轉載自:原文