gpt4 book ai didi

自动确定调用者的类名的 Java 记录器

转载 作者:IT老高 更新时间:2023-10-28 20:52:31 31 4
gpt4 key购买 nike

public static Logger getLogger() {
final Throwable t = new Throwable();
final StackTraceElement methodCaller = t.getStackTrace()[1];
final Logger logger = Logger.getLogger(methodCaller.getClassName());
logger.setLevel(ResourceManager.LOGLEVEL);
return logger;
}

此方法将返回一个记录器,该记录器知道它正在记录的类。有什么反对意见吗?

多年后:https://github.com/yanchenko/droidparts/blob/master/droidparts/src/org/droidparts/util/L.java

最佳答案

MethodHandles类(从 Java 7 开始)包括 Lookup类,从静态上下文中,可以找到并返回当前类的名称。考虑以下示例:

import java.lang.invoke.MethodHandles;

public class Main {
private static final Class clazz = MethodHandles.lookup().lookupClass();
private static final String CLASSNAME = clazz.getSimpleName();

public static void main( String args[] ) {
System.out.println( CLASSNAME );
}
}

运行时会产生:

Main

对于记录器,您可以使用:

private static Logger LOGGER = 
Logger.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());

关于自动确定调用者的类名的 Java 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/80692/

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