我想用JUL记录所有内容,并设置一个FileHandler来将所有内容写入日志文件,但是它只记录与FileHandler相同的类中的内容。如何不使用配置文件设置FileHandler全局?
发布于 2016-10-21 13:08:43
您可以遍历Logger的父级,删除查找的任何其他处理程序并调用logger.setUserParentHandlers(true),直到logger.getParent()返回null为止。这表明您已经找到了根Logger实例,您在其上调用了logger.addHandler(myOwnHandler)。您还可以调用logger.setLevel(.)在每个记录器上,以确保您的处理程序看到所有日志记录活动。下面是示例代码:
private static final Logger LOGGER = Logger.getLogger(MyMainClass.class.getName());
static {
Logger logger = LOGGER.getParent();
while(logger != null) {
Handler[] handlers = logger.getHandlers();
if(handlers != null) {
for(Handler handler : handlers) {
logger.removeHandler(handler);
}
}
if(logger.getParent() == null) {
logger.addHandler(SystemErrHandler.newInstance());
}
else {
logger.setUseParentHandlers(true);
}
if(logger.getName().startsWith("my.sample.package")) {
logger.setLevel(Level.ALL);
}
logger = logger.getParent();
}
}https://stackoverflow.com/questions/40176561
复制相似问题