记录器
记录器由应用程序和运行时组件使用以捕获消息并跟踪事件。
当由于状态发生更改(例如,服务器完成启动)或者因为检测到潜在问题(例如,等待资源时发生超时)而发生重大情况时,会将消息写入日志中。跟踪事件是在调试场景下记录的,在这些场景,开发者对于每个组件中发生的情况需要有一个清楚的了解以弄清问题的出处。记录的事件通常是当第一次检测到问题时唯一可用的事件,在问题恢复和问题解决期间使用。
记录器是分层组织的。每个记录器可以有零个或更多子记录器。
记录器可以与资源束相关联。如果指定了资源束,那么记录器使用资源束来将记录到记录器中的消息本地化。如果未指定资源束,那么记录器与其父代使用同一资源束。
可以为记录器配置一个级别。如果指定了级别,那么记录器会将级别与入局事件进行比较。严重性低于为记录器设置的级别的事件会被记录器忽略。如果未指定级别,那么记录器将采用其父代使用的级别。记录器的缺省级别是 Level.INFO。
记录器可以与多个处理程序相连,也可以不与任何处理程序相连。如果提供了处理程序,那么会将记录到记录器中的所有事件传递至相连的处理程序。处理程序将事件写到输出目标,例如日志文件或网络套接字。当记录器完成将已记录的事件传递给与该记录器相连的所有处理程序时,记录器又会将该事件传递给与该记录器的父代相连的处理程序。如果父记录器配置为不使用其父处理程序,此过程将停止。WebSphere Application Server 中的处理程序将连接到根记录器。将记录器属性 useParentHandlers 设置为 false,以防止记录器将事件写入位于层次结构中较高层的处理程序。
记录器可以有过滤器。如果提供了过滤器,那么为每个入局事件调用过滤器以告知记录器是否忽略。
应用程序直接与记录器交互作用以记录事件。要获取或创建记录器,请用记录器的名称对 Logger.getLogger 方法进行调用。通常,记录器名称是包限定的类名或使用该记录器的包名称。通过在记录器名称中使用点来自动创建分层记录器名称空间。例如,记录器 com.ibm.websphere.ras 有父记录器 com.ibm.websphere,而该父记录器又有父记录器 com.ibm。位于层次结构顶部的父代称为根记录器。在初始化期间创建此根记录器。该根记录器是 com 记录器的父代。
记录器是在层次结构中构造的。除了根记录器之外,每个记录器都有一个父代。每个记录器还可以有 0 个或多个子代。记录器从层次结构中的其父代继承日志处理程序、资源束名称和事件过滤设置。记录器层次结构由 LogManager 函数管理。
记录器创建日志记录。日志记录是事件数据的容器对象。此对象由记录基础结构中的过滤器、处理程序和格式化程序使用。
记录器提供生成日志消息的多组方法。某些日志方法只用一个级别和足够的信息来构造消息。另外,更复杂的 logp(日志精确)方法在传递类名和方法名属性时除了支持级别和消息信息,还支持调用者。logrb(具有资源束的日志)方法增加指定资源束以及级别、消息信息、类名和方法名的能力。使用诸如 severe、warning、fine、finer 和 finest 的方法,可以根据特定级别记录消息。有关记录以及如何在应用程序中使用记录的更多信息,请参阅使用应用程序中的 Java 日志记录。有关方法的完整列表,请参阅 java.util.logging 文档,网址如下:http://docs.oracle.com/javase/1.4.2/docs/api/index.html。