У меня есть модуль, над которым я работаю, в котором настроен регистратор следующим образом:
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, но не мог понять, как его использовать здесь.
Должен ли я инициализировать свой регистратор в своем конструкторе, где все мои параметры известны? Повлияет ли это на регистрацию в статических методах? Есть ли накладные расходы памяти для этого?