我正在寻找一种方法来设置内部类的日志级别,假设我有以下类:
package mypackage;
class Outer {
Inner inner = new Inner();
public void logSomething() {
Logger.getLogger(Outer.class.getName()).log(Level.FINE, "I'm alive!");
inner.logSomething();
}
class Inner {
public void logSomething() {
Logger.getLogger(Inner.class.getName()).log(Level.FINE, "I'm alive too!");
}
}
}
我可以使用名称 mypackage.Outer
设置 Outer 的日志级别。但是如何为 Inner
设置它呢?我测试了以下但没有成功:
mypackage.Outer
mypackage.Outer.Inner
mypackage.Outer$Inner
(给出错误)mypackage.Inner
有谁知道有没有办法做到这一点?
最佳答案
Inner.class.getName()
正在返回 mypackage.Outer$Inner
,它不遵循 Logger.getLogger() 的预期约定|参数
name
- A name for the logger. This should be a dot-separated name and should normally be based on the package name or class name of the subsystem, such as java.net or javax.swing
你可以明确地使用
Logger.getLogger("myPackage.Outer.Inner").log(Level.FINE, "I'm alive too!")
并使用 myPackage.Outer.Inner
设置级别
奇怪的是,消息被 SimpleFormatter()
格式化,使用 $ 作为内部类,因为它输出的是类名,而不是记录器名
28-feb-2013 19:04:16 mypackage.Outer$Inner logSomething
FINE: I'm alive too!
关于java - 设置内部类的日志级别(在 Glassfish 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898112/