合理的
我想在几个超类上有更详细的日志调试/日志输出,因此子类名称实际上不会影响实时性能或应用程序逻辑。我也认为正常执行此操作是相当糟糕的设计,但是我确实希望在开发运行期间记录此信息。
问题
假设我有一个简单的类结构,如下所示,如何将子类的名称拉入超类而无需显式传递引用?
public abstract AbstractClass {
private Logger logger = LoggerFactory.getLogger(getClass());
public AbstractClass() {}
public void execute(ContextObject context) {
if (logger.debuggingEnabled()) {
String invokingClassName = ""; // <-- how do I get this?
logger.debug("Executing {}", invokingClassName);
}
// shared application logic is here...
}
}
public MyClass extends AbstractClass {
public MyClass() {}
@Override
public void execute(ContextObject context) {
super.execute(context);
// application logic...
}
}
我以前曾使用过解析堆栈跟踪,我怀疑如果我想要这些信息,我必须走这条路。有谁知道可以为我做这件事的库或一个好的代码片段?