天天看點

Java接口自動化之log4j日志架構

作者:CoCo的軟體測試小棧

點選上方頭像關注我,每周上午 09:00準時推送,每月不定期贈送技術書籍,小視窗回複“資源”、“測試工具包”領取測試資源。

上一篇Java接口自動化系列文章:Java接口自動化之IDEA建立及運作maven項目,主要介紹如何用IDEA建立maven項目、maven項目結構介紹及maven項目運作實戰。

以下主要介紹Java日志架構Log4j。

01

log4j簡介

1 log4j介紹

Log4j(log for java)是java流行的日志架構,可以友善的記錄日志。

2 log4j特點

①靈活的配置日志的輸出方式、優先級及輸出格式;

②友善顯示程式運作時的調試資訊。

3 log4j日志級别

log日志,按照嚴重程度分為五個等級:DEBUG、INFO、WARN、ERROR和FATAL。

Log4j預設日志級别為INFO,規則是隻輸出比預設日志級别高的等級,即隻輸出INFO、WARN、ERROR和FATAL等級,DEBUG等級則不會輸出。

02

log4j日志三大部分

Log4j三大組成部分:

  • Loggers 日志等級
  • Appenders 日志輸出到哪,控制台or檔案?
  • Layouts 日志輸出格式

接下來根據這三大組成部分分别介紹如何配置日志。

1 Loggers 日志等級

log日志,按照嚴重程度分為五個等級:DEBUG、INFO、WARN、ERROR和FATAL。

Log4j預設日志級别為INFO,規則是隻輸出比預設日志級别高的等級,即隻輸出INFO、WARN、ERROR和FATAL等級,DEBUG等級則不會輸出。

在log4j.properties中,設定日志等級及輸出源:

# 設定日志等級及輸出源

log4j.rootLogger = INFO,console,file

其中,INFO為日志等級,console,file表示需要輸出到控制台和檔案中。

2 Appender 日志輸出位置

Appender 主要是用于定義日志輸出到哪裡,比如控制台、日志檔案、資料庫及郵件等。上面我們設定日志輸出到console,file,那麼接下來如何配置日志輸出到console及file中呢。在log4j.properties中,設定日志輸出位置。

輸出到控制台:

# 輸出到控制台

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.Target=System.out

輸出到日志檔案

# 将日志記錄在檔案中, 每天一個備份檔案

log4j.appender.file = org.apache.log4j.DailyRollingFileAppender

# 輸出日志到具體檔案中

log4j.appender.file.File = target/logs/auto_api.log

log4j.appender.file.Append = true

03

log4j日志實戰

①建立maven項目(上篇介紹過,這裡不再重複),在resources資源目錄下建立檔案log4j.properties。

②log4j.properties内容如下:

# 設定日志等級及輸出源

log4j.rootLogger = INFO,console,file

# 輸出到控制台

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.Target=System.out

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern= %p %d{yyyy-MM-dd HH:mm:ss} --> [%t] %l: %m %x %n

# 輸出到檔案

log4j.appender.file = org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.File = target/logs/auto_api.log

log4j.appender.file.Append = true

log4j.appender.file.layout = org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern = %p %d{yyyy-MM-dd HH:mm:ss} --> [%t] %l: %m %x %n

③建立Log4jTest類,編寫代碼。

import org.apache.log4j.Logger;

public class Log4jTest {

public static Logger logger = Logger.getLogger(Log4jTest.class);

public static void main(String[] args) {

test();

}

public static void test(){

logger.debug("這是debug級别");

logger.info("這是info級别");

logger.warn("這是warn級别");

logger.error("這是error級别");

}

}

代碼說明:

  • Logger.getLogger(Log4jTest.class),其中參數Log4jTest.class中的Log4jTest表示目前Log4jTest這個類,作用是追蹤Log4jTest類産生的日志。
  • logger.debug,logger.info,logger.warn,logger.error表示要輸出的日志級别,預設級别info。

④運作代碼,檢視實際日志運作效果。

控制台日志輸出:

INFO 2020-12-31 16:17:04 --> [main] com.vivi.Log4jTest.test(Log4jTest.java:15): 這是info級别

WARN 2020-12-31 16:17:04 --> [main] com.vivi.Log4jTest.test(Log4jTest.java:16): 這是warn級别

ERROR 2020-12-31 16:17:04 --> [main] com.vivi.Log4jTest.test(Log4jTest.java:17): 這是error級别

之前配置檔案log4j.properties裡,将日志輸入到target/logs下的auto_api.log中,日志記錄如下:

Java接口自動化之log4j日志架構

(完)

我是CoCo,計算機科學與技術專業,深漂大廠網際網路民工(女),坐标深圳。5年工作經驗,3年持續輸出技術文。ITester軟體測試小棧(ID:ITestingA)号主,Boss直聘好文社群簽約作者,騰訊雲社群優質創作者。專注于軟體測試技術和寶藏幹貨分享,每周準時更新原創技術文章,每月不定期贈送技術書籍,願我們在更高處相逢。喜歡記得星标⭐我,每周及時獲得最新推送,第三方轉載請注明出處。

喜歡記得星标置頂,讓我們一起守護成長

繼續閱讀