【发布时间】:2021-09-24 13:54:40
【问题描述】:
我有一个带有静态函数 doSthAndLogIt() 的 util 类。
在里面我想做点什么+记录。
我的问题是,如果没有在doSthAndLogIt(Logger logger) 中将记录器作为参数传递,有没有办法从调用doSthAndLogIt() 的类中获取记录器?
更多上下文:
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 作为函数参数传递
【问题讨论】: