首頁 > 軟體

java常見log紀錄檔的使用方法解析

2022-07-11 10:00:55

前言

log紀錄檔可以debug錯誤或者在關鍵位置輸出想要的結果

java紀錄檔使用一般有原生logger、log4j、Slf4j等

一般的紀錄檔級別都有如下(不同紀錄檔不一樣的方法引數,注意甄別)

引數描述
OFF、ON不輸出或者輸出所有級別資訊,通常使用在setLevel方法中
FATAL致命錯誤
ERROR錯誤error
WARN告警資訊
INFOinfo資訊
DEBUG偵錯資訊
TRACE執行軌跡資訊
CONFIG設定設定資訊
FINE級別輕微資訊
FINER級別更輕微資訊
FINEST級別最輕微資訊

1. Java.util.Logger

科普一下原生紀錄檔生成工具,主要參照import java.util.logging.Logger;

原始碼函數大致有如下方法:
(給定訊息將被轉發到所有註冊的輸出處理程式物件)

// 嚴重資訊
public void severe(String msg) { log(Level.SEVERE, msg);}

// 警告資訊
public void warning(String msg) { log(Level.WARNING, msg);}

// info資訊
 public void info(String msg) {log(Level.INFO, msg);}

// 設定設定資訊
public void config(String msg) {log(Level.CONFIG, msg);}

// 級別小資訊
public void fine(String msg) {log(Level.FINE, msg);}

// 級別更小資訊
public void finer(String msg) {log(Level.FINE, msg);}

// 級別最小資訊
public void finest(String msg) {log(Level.FINE, msg);}

具體範例如下:

package com.gaokaoli.logger;
import java.util.logging.Logger;

public class text1 {
    public static void main(String []args){
        Logger logger = Logger.getLogger("text1");

        logger.severe("嚴重資訊");
        logger.warning("警示資訊");
        logger.info("info資訊");

        logger.config("設定設定資訊");
        logger.fine("級別小的資訊");
        logger.finer("級別更小的資訊");
        logger.finest("級別最小的資訊");
    }
}

輸出截圖如下:

可以看到小於info級別的資訊不會在終端上顯示輸出

通過logger.setLevel(Level.ALL);來控制輸出的級別。
ALL則輸出severe、warning以及info,OF不輸出,如果設定WARNING,則只輸出severe以及warning;同理可推其他設定;

方法中也有通過呼叫提供的供應商函數來構造訊息,並將其轉發到所有註冊的輸出處理程式物件。

// 嚴重資訊
public void severe(Supplier<String> msgSupplier) {log(Level.SEVERE, msgSupplier);}

// 警告資訊
public void warning(Supplier<String> msgSupplier) {log(Level.WARNING, msgSupplier);}

// info資訊
 public void info(Supplier<String> msgSupplier) {log(Level.INFO, msgSupplier); }

// 設定設定資訊
public void config(Supplier<String> msgSupplier) {log(Level.CONFIG, msgSupplier);}

// 級別小資訊
public void fine(Supplier<String> msgSupplier) {log(Level.FINE, msgSupplier);}

// 級別更小資訊
public void finer(Supplier<String> msgSupplier) {log(Level.FINER, msgSupplier);}

// 級別最小資訊
public void finest(Supplier<String> msgSupplier) {log(Level.FINEST, msgSupplier);}

2. org.apache.logging.log4j

在xml檔案中匯入依賴包

<dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.14.1</version>
</dependency>

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

範例程式碼如下:

package com.gaokaoli.logger;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class test3 {
    public static void main(String []args){
        Logger logger = LogManager.getLogger("text3");
        logger.fatal("fatal錯誤");
        logger.error("error錯誤");
        logger.warn("warn警示");
        logger.info("info基本資訊");
        logger.debug("debug偵錯");
        logger.trace("trace 資訊");
    }
}

輸出結果如下:

其方法大致都有如下:

具體使用什麼方法可對應檢視

3. org.slf4j.Logger

目前主流的紀錄檔框架,可以使用預留位置進行引數佔位

主要通過slf4j作為紀錄檔輸出
在每個類的開頭都加入如下:

在xml檔案中引入依賴包

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-simple</artifactId>
	<version>1.7.25</version>
	<scope>compile</scope>
</dependency>

如果不引入或者引入錯誤
會出現如下問題:出現SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.的解決方法

程式碼中通過參照通過

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

具體範例程式碼如下:

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

public class text2 {
    public static final Logger logger = LoggerFactory.getLogger(text2.class);
    public static void main(String []args){
        logger.error("error錯誤");
        logger.warn("warn警示");
        logger.info("info基本資訊");
        logger.debug("debug偵錯");
        logger.trace("trace資訊");
    }
}

截圖如下:

通過輸出結果可看到
LoggerFactory.getLogger輸出的結果帶有類的相對路徑,便於開發

到此這篇關於java常見log紀錄檔的使用方法解析的文章就介紹到這了,更多相關java常見log紀錄檔內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com