亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 日志(Logging)

在本教程中,我們將借助示例學(xué)習(xí)Java日志記錄及其各種組件。

Java允許我們通過日志記錄過程來創(chuàng)建和捕獲日志消息和文件。

在Java中,日志記錄需要框架和API。Java在java.util.logging程序包中具有內(nèi)置的日志記錄框架。

我們還可以將第三方框架(如Log4j,Logback等)用于日志記錄。

Java 日志組件

下圖顯示了Java Logging API(java.util.logging)的核心組件和指定流程。

Java Logging API的指定流
Java日志流程圖

1.Logger

Logger類提供了日志記錄的方法。我們可以從Logger類中實例化對象并調(diào)用其方法以進行記錄。

讓我們舉個實例。

Logger logger = Logger.getLogger("newLoggerName");

Logger類的getLogger()方法用于查找或創(chuàng)建新的Logger。 字符串參數(shù)定義logger的名稱。

在這里,這將創(chuàng)建一個新Logger對象或返回一個具有相同名稱的Logger對象。

按照慣例,使用class.getName()在當(dāng)前類之后定義一個Logger。

Logger logger = Logger.getLogger(MyClass.class.getName());

注意:如果傳遞的名稱為null,該方法將拋出NullPointerException。

每個Logger都有確定日志消息重要性的級別。有7個基本日志級別:

日志級別(降序)使用
SEVERE嚴(yán)重故障
WARNING

警告消息,潛在問題

INFO常規(guī)運行時信息
CONFIG配置信息
FINE

普通的開發(fā)人員信息(跟蹤消息)

FINER

詳細(xì)的開發(fā)人員信息(跟蹤消息)

FINEST

高度詳細(xì)的開發(fā)人員信息(跟蹤消息)

OFF

關(guān)閉所有級別的日志記錄(不捕獲任何內(nèi)容)

ALL

打開所有級別的日志記錄(捕獲所有內(nèi)容)

每個日志級別都有一個整數(shù)值,用來確定它們的嚴(yán)重性,除了兩個特殊的日志級別OFF和ALL之外。

日志消息

默認(rèn)情況下,始終會記錄前三個日志級別。要設(shè)置其他級別,我們可以使用以下代碼:

logger.setLevel(Level.LogLevel);

// 示例
logger.setLevel(Level.FINE);

在本示例中,只有Level.FINE和它之上的級別被設(shè)置為日志記錄。刪除所有其他日志消息。

現(xiàn)在要記錄一條日志消息,我們使用該log()方法。

logger.log(Level.LogLevel, "log message");

// 示例
logger.log(Level.INFO, "This is INFO log level message");

有一些用于記錄所需級別的速記方法。

logger.info( "這是INFO日志級別的消息");
logger.warning( "這是WARNING日志級別的消息");

然后,已通過設(shè)置的日志級別的所有日志請求都將轉(zhuǎn)發(fā)到LogRecord。

注意:如果一個日志記錄器的級別被設(shè)置為null,那么它的級別將從其父繼承,以此類推。

2.篩選器(Filter)

過濾器(如果存在)決定LogRecord是否轉(zhuǎn)發(fā)該日志記錄。顧名思義,它根據(jù)特定的標(biāo)準(zhǔn)過濾日志消息。

如果LogRecord通過指定的條件,則僅從記錄器傳遞到日志處理程序,并從日志處理程序傳遞到外部系統(tǒng)。

// 設(shè)置filter
logger.setFilter(filter);

// 獲取 filter
Filter filter = logger.getFilter();

3.處理程序(輸出源)

日志處理程序或附加程序?qū)⒔邮?strong>LogRecord并將其導(dǎo)出到各種目標(biāo)。

Java SE提供了5個內(nèi)置處理程序:

處理程序使用
StreamHandler

寫入OutputStream

ConsoleHandler寫入控制臺
FileHandler寫入文件
SocketHandler

寫入到遠(yuǎn)程TCP端口

MemoryHandler寫入內(nèi)存

處理程序可以將LogRecord傳遞到過濾器,以再次確定是否可以將其轉(zhuǎn)發(fā)到外部系統(tǒng)。

要添加新的處理程序,我們使用以下代碼:

logger.addHandler(handler);

// 示例
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

要刪除處理程序,我們使用以下代碼:

logger.removeHandler(handler);

// 示例
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

一個記錄器可以有多個處理程序。要獲取所有處理程序,我們使用以下代碼:

Handler[] handlers = logger.getHandlers();

4.格式化程序(Formatter)

處理程序還可以使用FormatterLogRecord對象格式化為字符串,然后再將其導(dǎo)出到外部系統(tǒng)。

Java SE具有兩個內(nèi)置的Formatter

格式化程序使用
SimpleFormatter

將LogRecord格式化為字符串

XMLFormatter

將LogRecord格式化為XML格式

我們可以使用以下代碼來格式化處理程序:

// 格式化成字符串形式
handler.setFormatter(new SimpleFormatter());

// 格式化成XML格式
handler.setFormatter(new XMLFormatter());

日志管理器

日志管理對象跟蹤的全球記錄的信息。它讀取并維護日志記錄配置和記錄器實例。

日志管理器是單例,這意味著僅實例化了一個實例。

要獲取日志管理器實例,我們使用以下代碼:

LogManager manager = new LogManager();

日志的優(yōu)點

這是使用Java 日志的一些優(yōu)點。

  • 幫助監(jiān)控程序的流程

  • 幫助捕獲可能發(fā)生的任何錯誤

  • 為問題診斷和調(diào)試提供支持