<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 日志 > 原文: [https://www.programiz.com/java-programming/logging](https://www.programiz.com/java-programming/logging) #### 在本教程中,我們將借助示例學習 Java 日志記錄及其各種組件。 Java 允許我們通過日志記錄過程來創建和捕獲日志消息和文件。 在 Java 中,日志記錄需要框架和 API。 Java 在`java.util.logging`包中具有內置的日志記錄框架。 我們還可以將第三方框架(例如 Log4j,Logback 等)用于記錄目的。 * * * ## Java 日志組件 下圖表示 Java 日志記錄 API(`java.util.logging`)的核心組件和控制流程。 ![The flow of control of Java Logging API](https://img.kancloud.cn/e9/7c/e97c331b116e7cc087eeec69056bdee8_1456x352.png "Java Logging") Java 日志 ### 1.記錄器 `Logger`類提供了記錄方法。 我們可以從`Logger`類實例化對象并調用其方法以進行記錄。 讓我們舉個例子。 ```java Logger logger = Logger.getLogger("newLoggerName"); ``` `Logger`類的`getLogger()`方法用于查找或創建新的`Logger`。 字符串參數定義記錄器的名稱。 在這里,這將創建一個新的`Logger`對象或返回一個具有相同名稱的現有`Logger`。 約定使用`class.getName()`在當前類之后定義`Logger`。 ```java Logger logger = Logger.getLogger(MyClass.class.getName()); ``` **注意**:如果傳遞的名稱為`null`,則此方法將拋出`NullPointerException`。 每個`Logger`都有一個級別,該級別確定日志消息的重要性。 有 7 個基本日志級別: | 日志級別(降序) | 用途 | | --- | --- | | `SEVERE` | 嚴重失敗 | | `WARNING` | 警告消息,潛在問題 | | `INFO` | 常規運行時信息 | | `CONFIG` | 配置信息 | | `FINE` | 常規開發人員信息(跟蹤消息) | | `FINER` | 詳細的開發人員信息(跟蹤消息) | | `FINEST` | 高度詳細的開發人員信息(跟蹤消息) | | `OFF` | 關閉所有級別的日志記錄(不捕獲任何內容) | | `ALL` | 打開所有級別的日志記錄(捕獲所有內容) | 除了兩個特殊的日志級別`OFF`和`ALL`之外,每個日志級別都有一個確定其嚴重性的整數值。 * * * ### 記錄消息 默認情況下,始終會記錄前三個日志級別。 要設置其他級別,我們可以使用以下代碼: ```java logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE); ``` 在此示例中,僅級別`FINE`及其之上的級別被設置為記錄。 所有其他日志消息均被刪除。 現在要記錄一條消息,我們使用`log()`方法。 ```java logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); ``` 有一些用于記錄所需級別的速記方法。 ```java logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); ``` 然后,已通過設置的日志級別的所有日志請求都將轉發到`LogRecord`。 **注意**:如果記錄器的級別設置為`null`,則其級別將從其父級繼承,依此類推。 * * * ### 2.篩選器 篩選器(如果存在)確定是否應轉發`LogRecord`。 顧名思義,它會根據特定條件過濾日志消息。 `LogRecord`僅在通過指定條件時才從記錄器傳遞到日志處理器,并從日志處理器傳遞到外部系統。 ```java // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); ``` * * * ### 3.處理器(附加器) 日志處理器或附加程序將接收`LogRecord`,并將其導出到各種目標。 Java SE 提供了 5 個內置處理器: | 處理器 | 用途 | | --- | --- | | `StreamHandler` | 寫入`OutputStream` | | `ConsoleHandler` | 寫入控制臺 | | `FileHandler` | 寫入文件 | | `SocketHandler` | 寫入遠程 TCP 端口 | | `MemoryHandler` | 寫入內存 | 處理器可以將`LogRecord`傳遞給過濾器,以再次確定是否可以將其轉發到外部系統。 要添加新的處理器,我們使用以下代碼: ```java logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); ``` 要刪除處理器,我們使用以下代碼: ```java logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); ``` 一個記錄器可以有多個處理器。 要獲取所有處理器,我們使用以下代碼: ```java Handler[] handlers = logger.getHandlers(); ``` * * * ### 4.格式化器 處理器還可以使用**格式化器**將`LogRecord`對象格式化為字符串,然后再將其導出到外部系統。 Java SE 具有兩個內置的**格式化器**: | 格式化器 | 用途 | | --- | --- | | `SimpleFormatter` | 將`LogRecord`格式化為字符串 | | `XMLFormatter` | 將`LogRecord`格式轉換為 XML 格式 | 我們可以使用以下代碼來格式化處理器: ```java // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); ``` * * * ## 日志管理器 `LogManager`對象跟蹤全局日志記錄信息。 它讀取并維護日志記錄配置和記錄器實例。 日志管理器是單例,這意味著僅實例化了一個實例。 要獲取日志管理器實例,我們使用以下代碼: ```java LogManager manager = new LogManager(); ``` * * * ## 日志的優點 這是使用 Java 日志的一些優點。 * 幫助監控程序的流程 * 幫助捕獲可能發生的任何錯誤 * 為問題診斷和調試提供支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看