如何获取调用者 class' 记录器
How to get caller class' logger
我有一个带有静态函数 doSthAndLogIt()
的实用程序 class。
我想在里面做一些事情 + 记录。
我的问题是,如果不在 doSthAndLogIt(Logger logger)
中将记录器作为参数传递,是否有办法从调用 doSthAndLogIt()
的 class 获取记录器?
更多上下文:
public class UtilClz(){
// I don't want to use UtilClz's own logger, as caller's info will be lost
// Logger utilLogger = Logger.getLogger(UtilClz.class);
public static void doSthAndLogIt(Runnable runnable){
runnable.run();
//do logging
//callerLogger.info(...)
};
}
public class Caller(){
Logger callerLogger = Logger.getLogger(Caller.class);
public void doIt(){
UtilClz.doSthAndLogIt( () -> doSth() );
}
}
我想要实现的是,以某种方式让 callerLogger
在 UtilClz::doSthAndLogIt
中记录消息,而无需将 callerLogger
作为函数参数
传递
第 1 步:获取调用者 class。为避免重复,请参阅此问答:
第 2 步:调用者获取记录器 class。
我有一个带有静态函数 doSthAndLogIt()
的实用程序 class。
我想在里面做一些事情 + 记录。
我的问题是,如果不在 doSthAndLogIt(Logger logger)
中将记录器作为参数传递,是否有办法从调用 doSthAndLogIt()
的 class 获取记录器?
更多上下文:
public class UtilClz(){
// I don't want to use UtilClz's own logger, as caller's info will be lost
// Logger utilLogger = Logger.getLogger(UtilClz.class);
public static void doSthAndLogIt(Runnable runnable){
runnable.run();
//do logging
//callerLogger.info(...)
};
}
public class Caller(){
Logger callerLogger = Logger.getLogger(Caller.class);
public void doIt(){
UtilClz.doSthAndLogIt( () -> doSth() );
}
}
我想要实现的是,以某种方式让 callerLogger
在 UtilClz::doSthAndLogIt
中记录消息,而无需将 callerLogger
作为函数参数
第 1 步:获取调用者 class。为避免重复,请参阅此问答:
第 2 步:调用者获取记录器 class。