我有两个要跟踪的公共方法。其中一种方法反复调用另一种方法。我想做的是只跟踪从外部调用的方法。
这是一个简单的类来演示我的意思:
public class LoggingExample {
private static final Logger logger = LoggerFactory.getLogger(LoggingExample.class);
public static final String USER_ROOT = "/home/waisbrot";
/** could be called by fileExistsRobust *or* from outside */
public static boolean fileExists(String filename) {
logger.trace("Checking for file {}", filename);
File f = new File(filename);
return f.exists();
}
/** always gets called from outside */
public static boolean fileExistsRobust(String filename) {
logger.trace("Checking for any varient of {}", filename);
if (fileExists(filename))
return true;
for (String prefix : prefixes) { // this list is 100 items long
if (fileExists(prefix + filename));
return true;
}
return false;
}
}
在我的代码的其他地方,我可能会调用fileExists
,在这种情况下,我希望打印它的日志消息(假设我正在跟踪它)。但是,如果我打电话fileExistsRobost
比我想要那个日志消息,但不是fileExists
.
我想跟踪这两种方法,但是当我调用第二种方法时,我被埋没在输出中。我希望可以配置 Logback 以了解我想要的内容,但我在文档中没有看到任何有用的信息。我可以在输入时翻转一个标志fileExistsRobust
,然后在 中对其进行测试fileExists
,但是使用多个线程(因为这些是静态方法)会变得很难看,而且它似乎开始用大量的日志记录基础设施污染类。我可以使用 MDC 来存储信息,但这似乎是对 MDC 的滥用。
以前有人遇到过这种情况吗?你是怎么处理的?