Share via


Logger 類別

定義

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

[Android.Runtime.Register("java/util/logging/Logger", DoNotGenerateAcw=true)]
public class Logger : Java.Lang.Object
[<Android.Runtime.Register("java/util/logging/Logger", DoNotGenerateAcw=true)>]
type Logger = class
    inherit Object
繼承
Logger
屬性

備註

Logger 物件是用來記錄特定系統或應用程式元件的訊息。 記錄器通常會使用階層式點分隔命名空間來命名。 記錄器名稱可以是任一字元串,但通常應該以已記錄元件的套件名稱或類別名稱為基礎,例如 java.net 或 javax.swing。 此外,也可以建立未儲存在 Logger 命名空間中的「匿名」記錄器。

記錄器物件可以透過呼叫其中一個 getLogger Factory 方法來取得。 這些會建立新的記錄器,或傳回適當的現有記錄器。 請務必注意,如果記錄器的強式參考未保留,其中一個 getLogger 處理站方法傳回的記錄器可能會隨時進行垃圾收集。

記錄訊息會轉送至已註冊的 Handler 物件,可將訊息轉送至各種目的地,包括主控台、檔案、OS 記錄等。

每個記錄器都會追蹤「parent」 Logger,這是記錄器命名空間中最接近的現有上階。

每個記錄器都有與其相關聯的「層級」。 這反映此記錄器關心的最小層級。 如果 Logger 的層級設定 null 為 ,則其有效層級會繼承自其父代,進而從其父代遞迴取得它,依此類傳樹狀結構。

記錄層級可以根據記錄組態檔的屬性進行設定,如 LogManager 類別的描述中所述。 不過,您也可以在 Logger.setLevel 方法上呼叫來動態變更它。 如果記錄器層級變更,變更也可能會影響子記錄器,因為任何具有 null 作為其層級的子記錄器都會從其父系繼承其有效層級。

在每個記錄呼叫上,記錄器一開始會針對記錄器的有效記錄層級執行要求層級的便宜檢查 (例如,SEVERE 或 FINE) 。 如果要求層級低於記錄層級,記錄呼叫會立即傳回。

通過這個初始 (便宜) 測試之後,記錄器會配置 LogRecord 來描述記錄訊息。 然後,如果存在) ,它會呼叫 Filter (,以針對是否應該發佈記錄進行更詳細的檢查。 如果傳遞,則會將 LogRecord 發佈至其輸出處理常式。 根據預設,記錄器也會發佈至其父系的處理常式,以遞迴方式向上樹狀結構。

每個記錄器可能都有 ResourceBundle 相關聯的 。 ResourceBundle可以透過名稱、使用 #getLogger(java.lang.String, java.lang.String) Factory 方法或值來指定 - 使用 #setResourceBundle(java.util.ResourceBundle) setResourceBundle 方法。 此配套將用於當地語系化記錄訊息。 如果記錄器沒有自己的 ResourceBundle 或資源套件組合名稱,則會從其父系繼承 ResourceBundle 或 資源套件組合名稱,以遞迴方式向上樹狀結構。

大部分的記錄器輸出方法都會採用 「msg」 引數。 這個 msg 引數可能是原始值或當地語系化索引鍵。 在格式化期間,如果記錄器已 (或繼承) 當地語系化 ResourceBundle ,而且 具有 ResourceBundle msg 字串的對應,則 msg 字串會取代為當地語系化的值。 否則會使用原始的 msg 字串。 一般而言,格式器會使用 java.text.MessageFormat 樣式格式來格式化參數,例如,格式字串 「 {0}{1} 」 會將兩個參數格式化為字串。

或者,一組方法會採用 「msgSupplier」 而不是 「msg」 引數。 這些方法會採用 Supplier<String> 叫用函式來建構所需的記錄訊息,只有在實際根據有效記錄層級來記錄訊息時,才會叫用此函式,進而消除不必要的訊息建構。 例如,如果開發人員想要記錄系統健康情況狀態以進行診斷,使用字串接受版本,程式碼看起來會像這樣:

<code>

               class DiagnosisMessages {
                 static String systemHealthStatus() {
                   // collect system health information
                   ...
                 }
               }
               ...
               logger.log(Level.FINER, DiagnosisMessages.systemHealthStatus());
</code>

使用上述程式碼時,即使記錄層級 FINER 已停用,也會不必要地收集健康狀態。 使用如下所示的供應商接受版本時,只有在啟用記錄層級 FINER 時,才會收集狀態。

<code>

               logger.log(Level.FINER, DiagnosisMessages::systemHealthStatus);
</code>

尋找 ResourceBundle 時,記錄器會先查看是否使用 #setResourceBundle(java.util.ResourceBundle) setResourceBundle 指定套件組合,然後只會透過 #getLogger(java.lang.String, java.lang.String) getLogger Factory 方法指定資源套件組合名稱。 如果找不到 ResourceBundle 或找不到任何資源套件組合名稱,則會使用繼承自其父樹狀結構的最 ResourceBundle 接近或資源套件組合名稱。 <br > 當 ResourceBundle 透過 #setResourceBundle(java.util.ResourceBundle) setResourceBundle 方法繼承或指定 時,將會使用。 ResourceBundle 否則,如果記錄器只擁有或繼承資源套件組合名稱,則該資源套件組合名稱將會在記錄時使用預設地區設定對應至 ResourceBundle 物件。 <br id=「ResourceBundleMapping」 > 將資源組合名稱對應至 ResourceBundle 物件時,記錄器會先嘗試使用 Thread 的 java.lang.Thread#getCoNtextClassLoader () 內容類別別載入器,將指定的資源套件組合名稱對應至 ResourceBundle 。 如果執行緒內容類別別載入器為 null ,則會改為嘗試 java.lang.ClassLoader#getSystemClassLoader () 系統類別載入器。 ResourceBundle如果仍然找不到 ,它會使用 Factory 方法第一個呼叫端的 #getLogger(java.lang.String, java.lang.String) getLogger 類別載入器。

格式化 (包括當地語系化) 是輸出處理常式的責任,這通常會呼叫 Formatter。

請注意,格式設定不需要同步發生。 它可能會延遲到 LogRecord 實際寫入外部接收為止。

記錄方法分為五個主要類別: < ul >< li>

有一組「記錄」方法會採用記錄層級、訊息字串,以及選擇性地對訊息字串使用某些參數。 <li>

有一組 「logp」 方法 (「log precise」,) 類似 「log」 方法,但也採用明確的來源類別名稱和方法名稱。 <li>

「logp」 方法有一組 「logrb」 方法 (,) 類似 「logp」 方法,但也採用明確的資源套件組合物件來當地語系化記錄訊息。 <li>

(「輸入」方法) 追蹤方法專案有便利的方法,方法會傳回 (「結束」方法) 並擲回例外狀況, (「擲回」方法) 。 <li>

最後,當開發人員只想在指定的記錄層級記錄簡單的字串時,有一組方便的方法可用於最簡單的案例。 這些方法會以標準層級名稱命名 (「嚴重」、「警告」、「資訊」等 ) ,並採用單一引數訊息字串。 </ul>

對於未採用明確來源名稱和方法名稱的方法,記錄架構會做出「最佳努力」,以判斷在記錄方法中呼叫哪一個類別和方法。 不過,請務必瞭解這個自動推斷的資訊可能只是大約 (或甚至可能相當錯誤!) 。 虛擬機器在 JITing 時可以進行廣泛的優化,而且可能會完全移除堆疊框架,因此無法可靠地找出呼叫類別和方法。

記錄器上的所有方法都是多執行緒安全的方法。

<b > 子類別資訊: < /b > 請注意,LogManager 類別可能會針對命名空間中的任何點提供自己的具名 Loggers 實作。 因此,除非記錄 (器的任何子類別會與新的 LogManager 類別一起實作,否則) 應小心從 LogManager 類別取得 Logger 實例,並且應該將 「isLoggable」 和 「log (LogRecord) 」 等作業委派給該實例。 請注意,為了攔截所有記錄輸出,子類別只需要覆寫 log (LogRecord) 方法。 所有其他記錄方法都會實作為此記錄檔上的呼叫, (LogRecord) 方法。

已在 1.4 中新增。

java.util.logging.Logger JAVA 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。

建構函式

Logger(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。

Logger(String, String)

受保護方法來建構具名子系統的記錄器。

欄位

GlobalLoggerName

GLOBAL_LOGGER_NAME是全域記錄器的名稱。

屬性

AnonymousLogger

建立匿名記錄器。

Class

傳回這個 Object 的執行時間類別。

(繼承來源 Object)
Filter

取得此記錄器目前的篩選。 -或- 設定篩選以控制此記錄器上的輸出。

Global

傳回名稱為 Logger 的全域記錄器物件。

Handle

基礎 Android 實例的控制碼。

(繼承來源 Object)
JniIdentityHashCode

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
JniPeerMembers

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

Level

取得已為此記錄器指定的記錄層級。 -或- 設定記錄層級,指定此記錄器將記錄哪些訊息層級。

Name

取得此記錄器的名稱。

Parent

傳回這個記錄器的父代。 -或- 設定這個記錄器的父代。

PeerReference

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
ResourceBundle

擷取此記錄器的當地語系化資源配套。 -或- 在此記錄器上設定資源配套。

ResourceBundleName

擷取此記錄器的當地語系化資源配套名稱。

ThresholdClass

此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。

ThresholdType

此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。

UseParentHandlers

探索此記錄器是否要將輸出傳送至其父記錄器。 -或- 指定此記錄器是否應該將其輸出傳送至其父記錄器。

方法

AddHandler(Handler)

新增記錄處理常式以接收記錄訊息。

Clone()

建立並傳回這個 物件的複本。

(繼承來源 Object)
Config(ISupplier)

記錄 CONFIG 訊息,只有在記錄層級如此一來,才會實際記錄訊息。

Config(String)

記錄 CONFIG 訊息。

Dispose()

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
Dispose(Boolean)

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
Entering(String, String)

記錄方法專案。

Entering(String, String, Object)

使用一個參數記錄方法專案。

Entering(String, String, Object[])

使用參數陣列記錄方法專案。

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
Exiting(String, String)

記錄方法傳回。

Exiting(String, String, Object)

使用結果物件記錄方法傳回。

Fine(ISupplier)

記錄 FINE 訊息,只有在記錄層級如此一來,才會實際記錄訊息。

Fine(String)

記錄 FINE 訊息。

Finer(ISupplier)

記錄 FINER 訊息,只有在記錄層級如此一來,才會實際記錄訊息。

Finer(String)

記錄 FINER 訊息。

Finest(ISupplier)

記錄 FINEST 訊息,只有在記錄層級如此一來,才會實際記錄訊息。

Finest(String)

記錄 FINEST 訊息。

GetAnonymousLogger(String)

建立匿名記錄器。

GetHandlers()

取得與此記錄器相關聯的處理常式。

GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetLogger(String)

尋找或建立具名子系統的記錄器。

GetLogger(String, String)

尋找或建立具名子系統的記錄器。

Info(ISupplier)

記錄 INFO 訊息,只有在記錄層級如此一來,才會實際記錄訊息。

Info(String)

記錄 INFO 訊息。

IsLoggable(Level)

檢查指定層級的訊息是否實際會由這個記錄器記錄。

JavaFinalize()

當垃圾收集判斷物件沒有其他參考時,由物件上的垃圾收集行程呼叫。

(繼承來源 Object)
Log(Level, ISupplier)

記錄訊息,只有在記錄層級如此才會實際記錄訊息,才能建構訊息。

Log(Level, String)

記錄訊息,不含引數。

Log(Level, String, Object)

使用一個物件參數記錄訊息。

Log(Level, String, Object[])

使用物件引數陣列來記錄訊息。

Log(Level, String, Throwable)

使用相關聯的可擲回信息記錄訊息。

Log(Level, Throwable, ISupplier)

使用相關聯的可擲回信息記錄延遲建構的訊息。

Log(LogRecord)

記錄 LogRecord。

Logp(Level, String, String, ISupplier)

記錄延遲建構的訊息,並指定沒有引數的來源類別和方法。

Logp(Level, String, String, String)

記錄訊息,指定來源類別和方法,不含引數。

Logp(Level, String, String, String, Object)

使用單一物件參數記錄訊息,並指定來源類別和方法至記錄訊息。

Logp(Level, String, String, String, Object[])

使用物件引數陣列來記錄訊息,並指定來源類別和方法。

Logp(Level, String, String, String, Throwable)

使用相關聯的可擲回信息來記錄訊息,並指定來源類別和方法。

Logp(Level, String, String, Throwable, ISupplier)

使用相關聯的 Throwable 資訊,記錄延遲建構的訊息,並指定來源類別和方法。

Logrb(Level, String, String, ResourceBundle, String, Object[])

記錄訊息,指定沒有引數的來源類別、方法和資源套件組合名稱。

Logrb(Level, String, String, ResourceBundle, String, Throwable)

使用相關聯的可擲回信息來記錄訊息,並指定來源類別、方法和資源套件組合。

Logrb(Level, String, String, String, String)

記錄訊息,指定沒有引數的來源類別、方法和資源套件組合名稱。

Logrb(Level, String, String, String, String, Object)

使用單一物件參數,記錄訊息,並指定來源類別、方法和資源配套名稱。

Logrb(Level, String, String, String, String, Object[])

使用物件引數陣列來記錄訊息,並指定來源類別、方法和資源組合名稱。

Logrb(Level, String, String, String, String, Throwable)

使用相關聯的可擲回信息來記錄訊息,並指定來源類別、方法和資源套件組合名稱。

Notify()

喚醒正在等候此物件的監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
RemoveHandler(Handler)

移除記錄處理常式。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
Severe(ISupplier)

記錄嚴重性訊息,只有在記錄層級如此一來,才會實際記錄訊息。

Severe(String)

記錄嚴重性訊息。

Throwing(String, String, Throwable)

記錄擲回例外狀況。

ToArray<T>()

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
Wait()

讓目前的執行緒等到喚醒為止,通常是藉由 < em > notified < /em > 或 < em > interrupted < /em > 來喚醒。

(繼承來源 Object)
Wait(Int64)

讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。

(繼承來源 Object)
Warning(ISupplier)

記錄警告訊息,只有在記錄層級如此一來,才會實際記錄訊息。

Warning(String)

記錄警告訊息。

明確介面實作

IJavaPeerable.Disposed()

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
IJavaPeerable.Finalized()

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

GetJniTypeName(IJavaPeerable)

Logger 物件是用來記錄特定系統或應用程式元件的訊息。

適用於