Logger 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
记录器对象用于记录特定系统或应用程序组件的消息。
[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
- 继承
- 属性
注解
记录器对象用于记录特定系统或应用程序组件的消息。 记录器通常使用分层点分隔命名空间进行命名。 记录器名称可以是任意字符串,但它们通常应基于已记录组件的包名称或类名,例如 java.net 或 javax.swing。 此外,还可以创建不存储在 Logger 命名空间中的“匿名”记录器。
记录器对象可以通过对某个 getLogger 工厂方法的调用获取。 这些记录器将创建新的记录器或返回合适的现有记录器。 请务必注意,如果不保留对记录器的强引用,由其中一个工厂方法返回的 getLogger
记录器随时可能会被垃圾回收。
日志记录消息将转发到已注册的处理程序对象,这些对象可以将消息转发到各种目标,包括控制台、文件、OS 日志等。
每个记录器都会跟踪“父”记录器,该记录器是记录器命名空间中最近的现有上级。
每个记录器都有一个与之关联的“级别”。 这反映了此记录器关注的最小级别。 如果记录器级别设置为 null
,则其有效级别继承自其父级,这反过来可能从其父级以递归方式获取它,依此类归地从树上获取它。
可以根据日志记录配置文件中的属性配置日志级别,如 LogManager 类的说明中所述。 但是,也可以通过对 Logger.setLevel 方法的调用动态更改它。 如果记录器级别发生更改,更改也可能会影响子记录器,因为具有 null
其级别的任何子记录器都将从其父级继承其有效级别。
每次日志记录调用时,记录器最初都会对记录器的有效日志级别执行请求级别的廉价检查(例如,SEVERE 或 FINE)。 如果请求级别低于日志级别,则日志记录调用将立即返回。
通过此初始(廉价)测试后,记录器将分配 LogRecord 来描述日志记录消息。 然后,它将调用筛选器(如果存在),以便对记录是否应发布进行更详细的检查。 如果传递它,则将 LogRecord 发布到其输出处理程序。 默认情况下,记录器还会发布到其父处理程序,以递归方式向上显示树。
每个记录器可能都有一个 ResourceBundle
与之关联的记录器。 ResourceBundle
可以按名称、使用#getLogger(java.lang.String, java.lang.String)
工厂方法或值来指定 - 使用#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>
查找 a ResourceBundle
时,记录器将首先查看是否已使用 #setResourceBundle(java.util.ResourceBundle) setResourceBundle
捆绑包进行指定,然后仅通过 #getLogger(java.lang.String, java.lang.String) getLogger
工厂方法指定了资源捆绑包名称。 ResourceBundle
如果未找到或未找到资源捆绑名称,则它将使用从其父树继承的最接近ResourceBundle
或资源捆绑名称。<br> 当通过#setResourceBundle(java.util.ResourceBundle) setResourceBundle
方法继承或指定 a ResourceBundle
时,将使用该方法ResourceBundle
。 否则,如果记录器仅具有或继承资源捆绑名称,则在日志记录时使用默认的区域设置将资源捆绑名称映射到 ResourceBundle
对象。 <br id=“ResourceBundleMapping”>将资源包名称映射到 ResourceBundle
对象时,记录器将首先尝试使用 Thread 的 java.lang.Thread#getContextClassLoader() 上下文类加载程序将给定的资源捆绑包名称映射到 a ResourceBundle
。 如果线程上下文类加载程序是 null
,它将改为尝试 java.lang.ClassLoader#getSystemClassLoader() 系统类加载程序。 ResourceBundle
如果仍未找到,它将使用工厂方法的第一个调用方类#getLogger(java.lang.String, java.lang.String) getLogger
加载程序。
格式设置(包括本地化)是输出处理程序的责任,通常调用格式化程序。
请注意,格式设置不需要同步进行。 它可能会延迟到 LogRecord 实际写入外部接收器。
日志记录方法分为五个主要类别: <ul><li>
有一组“log”方法采用日志级别、消息字符串以及消息字符串的一些参数(可选)。 <李>
有一组“logp”方法(对于“log precise”)类似于“log”方法,但也采用显式源类名称和方法名称。 <李>
有一组“logrb”方法(对于“使用资源捆绑的日志”)类似于“logp”方法,但也采用显式资源捆绑对象来本地化日志消息。 <李>
跟踪方法条目(“输入”方法)、方法返回(“exiting”方法)和引发异常(“throwing”方法)有方便的方法。 <李>
最后,在最简单的情况下,当开发人员只想在给定日志级别记录一个简单的字符串时,可以使用一组方便的方法。 这些方法以标准级别名称(“severe”、“warning”、“info”等)命名,并采用单个参数消息字符串。 </ul>
对于不采用显式源名称和方法名称的方法,日志记录框架将尽最大努力来确定将哪个类和方法调用到日志记录方法中。 但是,请务必认识到,这种自动推断的信息可能只是近似信息(甚至可能相当错误! 允许虚拟机在 JITing 时进行广泛的优化,并且可能会完全删除堆栈帧,因此无法可靠地定位调用类和方法。
记录器上的所有方法都是多线程安全的。
<b>子类信息:</b> 请注意,LogManager 类可以为命名空间中的任何点提供自己的命名记录器的实现。 因此,记录器的任何子类(除非它们与新的 LogManager 类一起实现)应注意从 LogManager 类获取 Logger 实例,并应将“isLoggable”和“log(LogRecord)”等操作委托给该实例。 请注意,为了截获所有日志记录输出,子类只需要重写 log(LogRecord) 方法。 所有其他日志记录方法都作为对此日志(LogRecord)方法的调用实现。
在 1.4 中添加。
适用于 . 的 java.util.logging.Logger
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
Logger(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
Logger(String, String) |
用于为命名子系统构造记录器的受保护方法。 |
字段
GlobalLoggerName |
GLOBAL_LOGGER_NAME是全局记录器的名称。 |
属性
AnonymousLogger |
创建匿名记录器。 |
Class |
返回此 |
Filter |
获取此记录器的当前筛选器。 - 或 - 设置筛选器以控制此记录器的输出。 |
Global |
返回名为 Logger 的全局记录器对象。 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
JniPeerMembers |
记录器对象用于记录特定系统或应用程序组件的消息。 |
Level |
获取为此记录器指定的日志级别。 - 或 - 设置日志级别,指定此记录器将记录哪些消息级别。 |
Name |
获取此记录器的名称。 |
Parent |
返回此记录器的父级。 - 或 - 为此记录器设置父级。 |
PeerReference |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 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() |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
Dispose(Boolean) |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 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) |
记录延迟构造的消息,指定源类和方法,并记录关联的可引发信息。 |
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>() |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 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 消息,只有在日志记录级别如此,才会构造该消息,以便实际记录该消息。 |
Warning(String) |
记录警告消息。 |
显式接口实现
IJavaPeerable.Disposed() |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
IJavaPeerable.Finalized() |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
IJavaPeerable.JniManagedPeerState |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
记录器对象用于记录特定系统或应用程序组件的消息。 (继承自 Object) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
记录器对象用于记录特定系统或应用程序组件的消息。 |
GetJniTypeName(IJavaPeerable) |
记录器对象用于记录特定系统或应用程序组件的消息。 |