gpt4 book ai didi

java - 创建记录器时如何避免重复自己?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:25 24 4
gpt4 key购买 nike

我认为创建 java.util.logging.Logger 实例的常见用法是这样的:

public class SomeClassName {

private static final Logger LOG = Logger.getLogger(SomeClassName.class.getName());

}

当我重构我的代码时,我的 IDE 将管理适本地更改行(例如,更改类的名称)。不过,我仍然必须重复类(class)的名称,这让我很烦恼。我真正想做的是 Logger.getLogger(getName())Logger.getLogger(class.getName()),但这不是静态初始化中的合法 Java。

有没有更好的方法来获取不涉及重复我自己的记录器?

最佳答案

Issue 137 of The Java Specialists' Newsletter处理这个问题。它建议应用一个记录器工厂,它可以检测实际的类名,例如通过生成异常并分析调用堆栈。

我个人认为这比原来的问题更糟,但这只是我的 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();

...
}

关于java - 创建记录器时如何避免重复自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com