我在包TestClass
中有一个班级com.logtests
。我为TestClass
附加了一个日志处理程序,并为com.logtests.TestClass
将日志级别设置为ALL。我也有com.logtests
级别的处理程序。这很好。
现在,当我在com.logtests
将日志级别设置为OFF时,它也会关闭com.logtests.TestClass
的日志记录。由于我在较低级别设置了单独的处理程序,因此我希望com.logtests.TestClass
处的日志处理程序继续写入日志。
所以我的问题是:即使关闭父级别的日志记录,如何确保较低级别的类继续记录?
答案 0 :(得分:0)
来自java.util.logging.Logger.setLevel文档:
如果新级别为null,则表示此节点应从具有特定(非空)级别值的最近祖先继承其级别。
如果您为子记录器声明了一个确切的级别,那么它将不会从父记录器继承该级别。
com.logtests.level=OFF
com.logtests.TestClass.level=ALL
如果您在代码中设置级别,则操作顺序很重要。在将子记录器设置为OFF
之前,必须将父记录器设置为ALL
。
public class EffectiveLevel {
private static final Logger PARENT = Logger.getLogger("com.logtests");
private static final Logger CHILD = Logger.getLogger("com.logtests.TestClass");
public static void main(String[] args) {
PARENT.setLevel(Level.OFF);
CHILD.setLevel(Level.ALL);
System.out.println(PARENT.getName() + " " + PARENT.getLevel());
System.out.println(CHILD.getName() + " " + CHILD.getLevel());
}
}