public class LogManager
extends Object
java.lang.Object | |
↳ | java.util.logging.LogManager |
有一个全局LogManager对象用于维护一组关于Loggers和Log服务的共享状态。
这个LogManager对象:
全局LogManager对象可以使用LogManager.getLogManager()来检索。 LogManager对象是在类初始化期间创建的,不能随后进行更改。
在启动时,LogManager类使用java.util.logging.manager系统属性进行定位。
默认情况下,LogManager从JRE目录中的属性文件“lib / logging.properties”中读取其初始配置。 如果您编辑该属性文件,则可以更改该JRE所有用途的默认日志记录配置。
另外,LogManager使用两个可选的系统属性,可以更多地控制读取初始配置:
如果设置了“java.util.logging.config.class”属性,则属性值将被视为类名。 给定的类将被加载,一个对象将被实例化,并且该对象的构造函数负责在初始配置中进行读取。 (该对象可以使用其他系统属性来控制其配置。)备用配置类可以使用readConfiguration(InputStream)在LogManager中定义属性。
如果未设置“java.util.logging.config.class”属性,则可以使用“java.util.logging.config.file”系统属性指定属性文件(采用java.util.Properties格式)。 将从该文件读取初始日志记录配置。
如果没有定义这些属性,则如上所述,LogManager将从JRE目录中的属性文件“lib / logging.properties”中读取其初始配置。
记录器和处理程序的属性将具有以处理程序或记录器的点分隔名称开头的名称。
全局日志记录属性可能包括:
请注意,在LogManager配置期间加载的所有类首先在任何用户类路径之前的系统类路径中进行搜索。 这包括LogManager类,任何配置类和任何处理程序类。
记录器根据它们的点分隔名称被组织到命名层次结构中。 因此“abc”是“ab”的孩子,但是“a.b1”和a.b2“是同伴。
假设名称以“.level”结尾的所有属性都定义了记录器的日志级别。 因此,“foo.level”为名为“foo”的记录器定义了一个日志级别,并且(针对命名层次结构中的任何子级)递归地定义了该日志级别。 日志级别按照它们在属性文件中定义的顺序进行应用。 因此树中的子节点的级别设置应该在其父母的设置之后。 属性名称“.level”可用于设置树的根级别。
LogManager对象上的所有方法都是多线程安全的。
Constants |
|
---|---|
String |
LOGGING_MXBEAN_NAME 记录工具的管理界面的 |
Protected constructors |
|
---|---|
LogManager() 受保护的构造函数。 |
Public methods |
|
---|---|
boolean |
addLogger(Logger logger) 添加一个指定的记录器。 |
void |
addPropertyChangeListener(PropertyChangeListener l) 添加要重新读取日志记录属性时要调用的事件侦听器。 |
void |
checkAccess() 检查当前上下文是否可信,以修改日志记录配置。 |
static LogManager |
getLogManager() 返回全局LogManager对象。 |
Logger |
getLogger(String name) 找到指定记录器的方法。 |
Enumeration<String> |
getLoggerNames() 获取已知记录器名称的枚举。 |
static LoggingMXBean |
getLoggingMXBean() 用于管理记录器的退货 LoggingMXBean 。 |
String |
getProperty(String name) 获取日志记录属性的值。 |
void |
readConfiguration() 重新初始化日志记录属性并重新读取日志记录配置。 |
void |
readConfiguration(InputStream ins) 重新初始化日志记录属性并重新读取来自给定流的日志配置,应该使用java.util.Properties格式。 |
void |
removePropertyChangeListener(PropertyChangeListener l) 删除属性更改事件的事件侦听器。 |
void |
reset() 重置日志配置。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String LOGGING_MXBEAN_NAME
日志工具管理界面的 ObjectName
字符串表示形式。
也可以看看:
常量值:“java.util.logging:type = Logging”
LogManager ()
受保护的构造函数。 这是受保护的,以便容器应用程序(例如J2EE容器)可以对该对象进行子类化。 它是非公开的,因为它的目的是只有一个LogManager对象,其值通过调用Logmanager.getLogManager来检索。
boolean addLogger (Logger logger)
添加一个指定的记录器。 如果一个具有相同名字的记录器已经被注册,这将不做任何处理并返回false。
记录器工厂方法调用此方法来注册每个新创建的记录器。
应用程序应该保留自己对Logger对象的引用,以避免它被垃圾收集。 LogManager只能保留一个弱引用。
Parameters | |
---|---|
logger |
Logger : the new logger. |
Returns | |
---|---|
boolean |
true if the argument logger was registered successfully, false if a logger of that name already exists. |
Throws | |
---|---|
NullPointerException |
if the logger name is null. |
void addPropertyChangeListener (PropertyChangeListener l)
添加要重新读取日志记录属性时要调用的事件侦听器。 添加同一事件侦听器的多个实例会导致属性事件侦听器表中有多个条目。
Parameters | |
---|---|
l |
PropertyChangeListener : event listener |
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |
NullPointerException |
if the PropertyChangeListener is null. |
void checkAccess ()
检查当前上下文是否可信,以修改日志记录配置。 这需要LoggingPermission(“控制”)。
如果检查失败,则抛出SecurityException,否则我们会正常返回。
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |
Logger getLogger (String name)
找到指定记录器的方法。
请注意,由于不受信任的代码可能会创建具有任意名称的记录器,因此不应依赖此方法来查找Loggers以进行安全敏感的记录。 同样重要的是要注意,如果没有对记录器的强引用,任何时候与字符串name
相关的记录器name
可能被垃圾收集。 此方法的调用者必须检查null的返回值,以正确处理记录器已被垃圾收集的情况。
Parameters | |
---|---|
name |
String : name of the logger |
Returns | |
---|---|
Logger |
matching logger or null if none is found |
Enumeration<String> getLoggerNames ()
获取已知记录器名称的枚举。
注意:随着新类的加载,记录器可能会动态添加。 此方法仅报告当前注册的记录器。 注意这一点也很重要,该方法只返回记录器的名称,而不是对记录器本身的强引用。 返回的字符串不会阻止记录器被垃圾收集。 特别是,如果返回的名称被传递给LogManager.getLogger()
,那么调用者必须检查来自LogManager.getLogger()
的返回值为null,以正确处理记录器在自该名称由该方法返回后的时间内被垃圾收集的情况。
Returns | |
---|---|
Enumeration<String> |
enumeration of logger name strings |
LoggingMXBean getLoggingMXBean ()
用于管理记录器的退货 LoggingMXBean 。
Returns | |
---|---|
LoggingMXBean |
a LoggingMXBean object. |
String getProperty (String name)
获取日志记录属性的值。 如果找不到该属性,该方法返回null。
Parameters | |
---|---|
name |
String : property name |
Returns | |
---|---|
String |
property value |
void readConfiguration ()
重新初始化日志记录属性并重新读取日志记录配置。
使用相同的规则来查找启动时使用的配置属性。 所以通常情况下,日志记录属性将从启动时使用的相同文件重新读取。
如果目标记录器存在,则使用Logger.setLevel()应用新配置文件中的任何日志级别定义。
读取属性后,PropertyChangeEvent将被触发。
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |
IOException |
if there are IO problems reading the configuration. |
void readConfiguration (InputStream ins)
重新初始化日志记录属性并重新读取来自给定流的日志配置,应该使用java.util.Properties格式。 读取属性后,PropertyChangeEvent将被触发。
如果目标记录器存在,则使用Logger.setLevel()应用新配置文件中的任何日志级别定义。
Parameters | |
---|---|
ins |
InputStream : stream to read properties from |
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |
IOException |
if there are problems reading from the stream. |
void removePropertyChangeListener (PropertyChangeListener l)
删除属性更改事件的事件侦听器。 如果通过多次调用addPropertyChangeListener
将相同的侦听器实例添加到侦听器表中,则需要等效数量的removePropertyChangeListener
调用才能从侦听器表中删除该侦听器的所有实例。
如果找不到给定的侦听器,则无提示返回。
Parameters | |
---|---|
l |
PropertyChangeListener : event listener (can be null) |
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |
void reset ()
重置日志配置。
对于所有指定的记录器,重置操作将删除并关闭所有处理程序,并且(除根记录器外)将该级别设置为空。 根记录器的级别设置为Level.INFO。
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |