public class LogManager extends Object
这个LogManager对象:
可以使用LogManager.getLogManager()检索全局LogManager对象。 LogManager对象在类初始化期间创建,不能随后更改。
在启动时,使用java.util.logging.manager系统属性定位LogManager类。
LogManager定义了两个可选的系统属性,可以控制初始配置:
如果设置了“java.util.logging.config.class”属性,那么属性值将被视为一个类名。 给定的类将被加载,一个对象将被实例化,该对象的构造函数负责在初始配置中进行读取。 (该对象可以使用其他系统属性来控制其配置。)备用配置类可以使用readConfiguration(InputStream)来定义LogManager中的属性。
如果未设置“java.util.logging.config.class”属性,则可以使用“java.util.logging.config.file”系统属性来指定属性文件(以java.util.Properties格式)。 从该文件读取初始记录配置。
如果这两个属性都未定义,则LogManager将使用其默认配置。 默认配置通常从Java安装目录中的属性文件“ lib/logging.properties
”加载。
记录器和处理程序的属性将以处理程序或记录器的点分隔名称开头。
全局日志记录属性可能包括:
请注意,在任何用户类路径之前,首先在系统类路径上搜索LogManager配置期间加载的所有类。 这包括LogManager类,任何配置类和任何处理程序类。
记录器根据它们的点分隔名称组织成命名层次结构。 因此,“abc”是“ab”的孩子,但是“a.b1”和a.b2“是对等体。
名称以“.level”结尾的所有属性都假定为Loggers定义日志级别。 因此,“foo.level”定义了名为“foo”的记录器的日志级别,并且(递归地)为命名层次结构中的任何子节点定义了日志级别。 日志级别按照它们在属性文件中定义的顺序应用。 因此,树中的子节点的级别设置应该来自其父母的设置。 属性名称“.level”可用于设置树根的级别。
LogManager对象上的所有方法都是多线程安全的。
Modifier and Type | Field and Description |
---|---|
static String |
LOGGING_MXBEAN_NAME
该字符串表示 ObjectName 为日志工具的管理界面。
|
Modifier | Constructor and Description |
---|---|
protected |
LogManager()
受保护的构造函数。
|
Modifier and Type | Method and Description |
---|---|
boolean |
addLogger(Logger logger)
添加一个命名记录器。
|
void |
addPropertyChangeListener(PropertyChangeListener l)
已弃用
对
PropertyChangeListener 的依赖性对Java平台的未来PropertyChangeListener 造成了重大障碍。
此方法将在以后的版本中删除。
全局LogManager 可以通过覆盖readConfiguration 方法来检测日志记录配置的更改。
|
void |
checkAccess()
检查当前上下文是否受信任以修改日志记录配置。
|
Logger |
getLogger(String name)
找到一个命名记录器的方法。
|
Enumeration<String> |
getLoggerNames()
获取已知记录器名称的枚举。
|
static LoggingMXBean |
getLoggingMXBean()
退货
LoggingMXBean用于管理记录器。
|
static LogManager |
getLogManager()
返回全局LogManager对象。
|
String |
getProperty(String name)
获取日志记录属性的值。
|
void |
readConfiguration()
重新初始化日志记录属性并重新读取日志配置。
|
void |
readConfiguration(InputStream ins)
重新初始化日志记录属性,并从给定流重新读取日志记录配置,这些流应该是java.util.Properties格式。
|
void |
removePropertyChangeListener(PropertyChangeListener l)
已弃用
对
PropertyChangeListener 的依赖性对未来Java平台的PropertyChangeListener 造成了重大障碍。
此方法将在以后的版本中删除。
全局LogManager 可以通过覆盖readConfiguration 方法检测日志记录配置的更改。
|
void |
reset()
重置日志配置。
|
public static final String LOGGING_MXBEAN_NAME
ObjectName
为日志工具的管理界面。
PlatformLoggingMXBean
, LoggingMXBean
, Constant Field Values
protected LogManager()
public static LogManager getLogManager()
@Deprecated public void addPropertyChangeListener(PropertyChangeListener l) throws SecurityException
PropertyChangeListener
的依赖性对未来Java平台的PropertyChangeListener
造成了重大障碍。
此方法将在以后的版本中删除。
全局LogManager
可以通过覆盖readConfiguration
方法来检测日志记录配置的更改。
警告:在Java SE的所有不包括java.beans
程序包的子集配置文件中,此类将省略此方法。
l
- 事件侦听器
SecurityException
- 如果安全管理器存在,并且调用者没有LoggingPermission(“控制”)。
NullPointerException
- 如果PropertyChangeListener为空。
@Deprecated public void removePropertyChangeListener(PropertyChangeListener l) throws SecurityException
PropertyChangeListener
的依赖性对未来Java平台的PropertyChangeListener
造成了重大障碍。
此方法将在以后的版本中删除。
全局LogManager
可以通过覆盖readConfiguration
方法来检测日志记录配置的更改。
addPropertyChangeListener
,则同等数量removePropertyChangeListener
需要调用以从听者表中删除该侦听器的所有实例。
如果找不到给定的监听器,则会静默地返回。
警告:在Java SE的所有不包括java.beans
包的子集配置文件中,此类将省略此方法。
l
- 事件侦听器(可以为null)
SecurityException
- 如果安全管理器存在,并且调用者没有LoggingPermission(“control”)。
public boolean addLogger(Logger logger)
记录器工厂方法调用此方法来注册每个新创建的记录器。
应用程序应该保留自己对Logger对象的引用,以避免它被垃圾回收。 LogManager可能只保留弱引用。
logger
- 新的记录器。
NullPointerException
- 如果记录器名称为空。
public Logger getLogger(String name)
请注意,由于不可信代码可能会创建具有任意名称的日志记录器,因此不应依赖此方法来查找日志记录器以进行安全敏感日志记录。 同样重要的是注意,如果没有强大的引用记录器,与字符串name
的记录器可能随时被垃圾回收。 该方法的调用者必须检查null的返回值才能正确处理Logger已被垃圾回收的情况。
name
- 记录器的名称
public Enumeration<String> getLoggerNames()
注意:加载新类时,可以动态添加记录器。 此方法仅报告当前注册的记录器。 同样重要的是要注意,此方法只返回Logger的名称,而不是对Logger本身的强引用。 返回的String不会阻止Logger被垃圾回收。 特别地,如果返回的名称传递给LogManager.getLogger()
,则调用者必须从LogManager.getLogger()
检查返回值为null,以正确处理由于此方法返回其名称后,Logger已被垃圾回收的情况。
public void readConfiguration() throws IOException, SecurityException
使用相同的规则来定位启动时使用的配置属性。 所以通常记录属性将从启动时使用的同一文件重新读取。
如果目标记录器存在,则新配置文件中的任何日志级别定义将使用Logger.setLevel()应用。
属性读取后,PropertyChangeEvent将被触发。
SecurityException
- 如果安全管理器存在,并且呼叫者没有LoggingPermission(“控制”)。
IOException
- 如果读取配置有IO问题。
public void reset() throws SecurityException
对于所有命名的记录器,重置操作将删除并关闭所有处理程序,除了根记录器之外,将级别设置为空。 根记录器的级别设置为Level.INFO。
SecurityException
- 如果安全管理器存在,并且调用者没有LoggingPermission(“control”)。
public void readConfiguration(InputStream ins) throws IOException, SecurityException
如果目标记录器存在,则新配置文件中的任何日志级别定义将使用Logger.setLevel()应用。
ins
- 从中读取属性的流
SecurityException
- 如果安全管理器存在,并且调用者没有LoggingPermission(“控制”)。
IOException
- 如果从流读取有问题。
public String getProperty(String name)
name
- 属性名称
public void checkAccess() throws SecurityException
如果检查失败,我们抛出一个SecurityException,否则返回正常。
SecurityException
- 如果安全管理器存在,并且呼叫者没有LoggingPermission(“控制”)。
public static LoggingMXBean getLoggingMXBean()
PlatformLoggingMXBean
接口,可以通过调用:
PlatformLoggingMXBean logging = ManagementFactory.getPlatformMXBean
(PlatformLoggingMXBean.class);
LoggingMXBean
对象。
PlatformLoggingMXBean