【发布时间】:2020-08-31 13:05:39
【问题描述】:
我正在处理一个模块,它的记录器设置如下:
public class MyClass {
private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
public MyClass(String org, String division) {
this.org = org;
this.division = division;
}
public void myMethod() {
if(blah) {
LOGGER.log("Something happened");
} else {
LOGGER.log("Something went Wrong");
}
}
}
现在,这个模块正在为多个组织和部门运行,所以我的日志在 Splunk 中如下所示:
Something happened
Something went Wrong
Something happened
Something happened
Something went Wrong
没有组织或部门的信息,为了解决这个问题,有人开始添加 addPrefix 方法,如下所示:
private String addPrefix() {
return String.format("(%s, %s)", this.org, this.division);
}
并将日志更新为LOGGER.log("{} Something happened", addPrefix()); 和LOGGER.log("{} Something went wrong", addPrefix());
现在我们的日志如下所示:
(org1, div1) Something happened
(org1, div2) Something went Wrong
(org2, div3) Something happened
问题是,随着日志数量的增加,维护它并确保每个人都将{}, addPrefix() 添加到他们的日志中是很痛苦的。有一个更好的方法吗?
我查看了 mdc,但不知道如何在这里使用它。
我应该在我的参数都知道的构造函数中初始化我的记录器吗?这会影响静态方法的登录吗?这样做有内存开销吗?
【问题讨论】:
标签: java logging log4j slf4j mdc