我认为创建实例的常用习惯java.util.logging.Logger是:
public class SomeClassName {
private static final Logger LOG = Logger.getLogger(SomeClassName.class.getName());
}
Run Code Online (Sandbox Code Playgroud)
当我重构代码时,我的IDE将管理适当的更改行(例如,更改类的名称).不过,我仍然不得不重复我的课程名称.我真正喜欢做的事情是Logger.getLogger(getName())或者Logger.getLogger(class.getName()),但这不是合法的Java静态启动.
是否有更好的方法来获取不涉及重复自己的记录器?
Pét*_*rök 10
Java专家通讯的第137期处理此问题.它建议应用一个记录器工厂,它可以检测实际的类名,例如通过生成异常并分析调用堆栈.
我个人认为这比原来的问题更糟糕,但这只是我的2美分.无论如何,技术上它很有趣,所以这里是:
public class LoggerFactory {
public static Logger make() {
Throwable t = new Throwable();
StackTraceElement directCaller = t.getStackTrace()[1];
return Logger.getLogger(directCaller.getClassName());
}
}
...
public class BetterApplication {
private final static Logger logger = LoggerFactory.make();
...
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个Eclipse代码模板并且每次都使用它.

您只需键入logger并按Ctrl+ Space即可激活它.
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |