跨方法记录标识符

Logging Identifiers across methods

我有一些 ID(来自数据库的 ID,例如 34645),我目前使用类似以下内容记录为“[34645] - 发生了一些事情”:

log.info("[" + id + "]" + foo);

有些日志,例如 "server starting"、"database connection bla" 没有 ID,因此不记录任何日志,这很好。

然而,当我有一个 id 时,我调用的方法也会记录,但没有 id,比如:

lookup(name) {
  //do some lookup and stuff
  log.info("[" + name + "]" has some info we use somewhere: " + result);
}

有没有一种(智能)方法可以在不将 id 传递给 lookup() 或重构 class 层次结构的情况下将 id 记录在 lookup() 中?有不同的线程记录,因此 setting/unsetting logback 使用的 id 值可能很难正确。

根据要求,我喜欢学分,您可以使用 MDC。

相关信息在这里:http://logback.qos.ch/manual/mdc.html

谢谢 :)