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。 此外,还可以创建不存储在记录器命名空间中的“匿名”记录器。

记录器对象可以通过对 getLogger 工厂方法之一的调用来获取。 这些记录器将创建新的记录器或返回合适的现有记录器。 请务必注意,如果未保留对记录器的强引用,则其中一 getLogger 个工厂方法返回的记录器可能随时被垃圾回收。

日志记录消息将转发到已注册的 Handler 对象,后者可以将消息转发到各种目标,包括控制台、文件、OS 日志等。

每个记录器都跟踪“父”记录器,该记录器是记录器命名空间中最接近的现有上级。

每个记录器都有一个与之关联的“级别”。 这反映了此记录器关注的最低级别。 如果记录器级别设置为 null,则其有效级别继承自其父级,而父级又可能从其父级以递归方式获取该级别,在树上以递归方式获取该级别。

日志级别可以根据日志记录配置文件中的属性进行配置,如 LogManager 类的说明中所述。 但是,它也可以通过对 Logger.setLevel 方法的调用来动态更改。 如果记录器的级别发生更改,则更改还可能会影响子记录器,因为将 作为 null 其级别的任何子记录器都将从其父级继承其有效级别。

在每个日志记录调用上,记录器最初会针对记录器的有效日志级别执行请求级别的廉价检查 (例如,SEVERE 或 FINE) 。 如果请求级别低于日志级别,则日志记录调用将立即返回。

通过此初始 (廉价) 测试后,记录器将分配 LogRecord 来描述日志记录消息。 然后,如果存在) 对是否应发布记录执行更详细的检查,它将调用 Filter (。 如果传递,它将将 LogRecord 发布到其输出处理程序。 默认情况下,记录器还会以递归方式向上向树发布到其父处理程序。

每个记录器都可以有 ResourceBundle 与之关联的 。 ResourceBundle可以按名称、工厂#getLogger(java.lang.String, java.lang.String)方法或值 (使用 方法)#setResourceBundle(java.util.ResourceBundle) setResourceBundle指定 。 此捆绑包将用于本地化日志记录消息。 如果记录器没有自己的 ResourceBundle 或资源捆绑包名称,它将从其父级继承 ResourceBundle 或 资源捆绑包名称,以递归方式向上树。

大多数记录器输出方法采用“msg”参数。 此 msg 参数可以是原始值或本地化键。 在格式化过程中,如果记录器 (或继承) 本地化 ResourceBundle ,并且 如果 ResourceBundle 具有 msg 字符串的映射,则 msg 字符串将替换为本地化值。 否则,使用原始消息字符串。 通常,格式化程序使用 java.text.MessageFormat 样式格式设置参数的格式,因此,例如,格式字符串“”{0}{1}会将两个参数的格式设置为字符串。

或者,一组方法采用“msgSupplier”而不是“msg”参数。 这些方法采用一个 Supplier<String> 函数,该函数仅在实际基于有效日志级别记录消息时才调用该函数来构造所需的日志消息,从而消除了不必要的消息构造。 例如,如果开发人员想要使用 String-accepting 版本记录系统运行状况以便进行诊断,则代码将如下所示:

<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 工厂方法指定了资源捆绑包名称。 ResourceBundle如果未找到或未找到资源捆绑包名称,则它将使用从其父树继承的最近ResourceBundle名称或资源捆绑包名称。<br> 当通过 #setResourceBundle(java.util.ResourceBundle) setResourceBundle 方法继承或指定 时ResourceBundleResourceBundle将使用该 。 否则,如果记录器仅具有或继承了资源包名称,则该资源捆绑名称将在日志记录时使用默认区域设置映射到 ResourceBundle 对象。 <br id=“ResourceBundleMapping”>将资源包名称映射到 ResourceBundle 对象时,记录器将首先尝试使用 Thread 的 java.lang.Thread#getContextClassLoader () 上下文类加载程序将给定的资源捆绑包名称映射到 ResourceBundle。 如果线程上下文类加载程序为 null,它将改为尝试 java.lang.ClassLoader#getSystemClassLoader () 系统类加载程序。 ResourceBundle如果仍然找不到 ,它将使用工厂方法的第一个调用者的#getLogger(java.lang.String, java.lang.String) getLogger类加载程序。

格式化 (包括本地化) 由输出处理程序负责,该处理程序通常调用格式化程序。

请注意,格式设置不需要同步进行。 它可能会延迟,直到 LogRecord 实际写入外部接收器。

日志记录方法分为五个main类别:<ul><li>

有一组“log”方法,这些方法采用日志级别、消息字符串和消息字符串的一些参数(可选)。 <李>

有一组“logp”方法 (用于“log precise”) ,这些方法类似于“log”方法,但也采用显式的源类名称和方法名称。 <李>

有一组“logrb”方法 (用于“具有资源捆绑包的日志”) ,这些方法类似于“logp”方法,但也采用显式资源捆绑对象用于本地化日志消息。 <李>

跟踪方法条目 (“输入”方法) ,方法返回 (“exiting”方法) 和引发异常 (“throwing”方法) 。 <李>

最后,当开发人员只想在给定日志级别记录一个简单的字符串时,可以使用一组最简单的方法。 这些方法以标准级别名称 (“严重”、“警告”、“info”等 ) 命名,并采用单个参数(消息字符串)。 </ul>

对于不采用显式源名称和方法名称的方法,日志记录框架将尽最大努力确定将哪个类和方法调用到日志记录方法中。 但是,请务必注意,这种自动推断的信息可能只是近似 (,甚至可能非常错误!) 。 允许虚拟机在 JITing 时进行广泛的优化,并且可能会完全删除堆栈帧,从而无法可靠地定位调用类和方法。

Logger 上的所有方法都是多线程安全的。

<b>子类化信息:</b> 请注意,LogManager 类可以为命名空间中的任何点提供其自己的命名 Loggers 实现。 因此,Logger 的任何子类 (除非它们与新的 LogManager 类一起实现) 应注意从 LogManager 类获取 Logger 实例,并应将“isLoggable”和“log (LogRecord) ”等操作委托给该实例。 请注意,若要截获所有日志记录输出,子类只需重写 log (LogRecord) 方法。 所有其他日志记录方法作为对此日志 (LogRecord) 方法的调用实现。

在 1.4 中添加。

java.util.logging.LoggerJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

Logger(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

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)

使用 result 对象记录方法返回。

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)

记录延迟构造的消息,指定源类和方法,并记录关联的可引发信息。

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 消息,只有在日志记录级别实际记录消息时,才会构造该消息。

Severe(String)

记录严重消息。

Throwing(String, String, Throwable)

引发异常的日志。

ToArray<T>()

Logger 对象用于记录特定系统或应用程序组件的消息。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

Logger 对象用于记录特定系统或应用程序组件的消息。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/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 对象用于记录特定系统或应用程序组件的消息。

适用于