作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 LogManager 中,方法 getLoggerNames 似乎仅返回已实际实例化的记录器。但是,日志记录属性可以“保留”,直到实例化具有给定名称的记录器为止。
有没有办法获取我们设置的记录器的完整列表,或者至少获取当前属性集/映射,而无需从我自己的代码中读取原始文件?
最佳答案
JDK-8033661: readConfiguration does not cleanly reinitialize the logging system已在 Java 版本 9 中修复,添加了 LogManager.updateConfiguration(Function<String,BiFunction<String,String,String>>)方法。根据文档,此方法将读取配置键并返回一个函数,该函数的返回值将应用于结果配置。通过提供身份函数,您可以通过执行如下操作来迭代现有的配置键,而不是实际创建的记录器:
Function<String, BiFunction<String,String,String>> consume
= new Function<String, BiFunction<String,String,String>>() {
@Override
public BiFunction<String, String, String> apply(final String k) {
return new BiFunction<String, String, String>() {
@Override
public String apply(String o, String n) {
System.out.println(k +"="+ o);
return o;
}
};
}
};
LogManager.getLogManager().updateConfiguration(consume);
对于 JDK 8 及更早版本,您必须执行以下操作之一:
读取属性文件的简单方法是使用 java.util.Properties类。
final Properties props = new Properties();
try {
String v = System.getProperty("java.util.logging.config.file");
if (v == null) {
v = System.getProperty("java.home") + "/lib/logging.properties";
}
final File f = new File(v).getCanonicalFile();
final InputStream in = new FileInputStream(f);
try {
props.load(in);
} finally {
in.close();
}
} catch (final RuntimeException permissionsOrMalformed) {
} catch (final Exception ioe) {
}
关于java - 有没有办法让 java.util.logging.LogManager 报告指定属性的所有记录器或访问属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37080201/
我是一名优秀的程序员,十分优秀!