Обычно регистрация выглядит следующим образом:
Duration duration = ...;
log.info("Duration: {}", duration);
Но что делать, если вам нужно пользовательское форматирование?
if (log.isInfoEnabled()) {
String value = duration.toSeconds() + "." + duration.toMillis();
log.info("Duration: {}", value);
}
В этом случае код сложен. Я ищу способ сделать простое ведение журнала, как в первом примере, но чтобы иметь возможность настраивать форматирование значений, используя некоторый механизм, например, определить функцию форматирования для данного типа:
LogSystem.install(Duration.class, duration -> {
return String.format("%d.%d", duration.toSeconds(), duration.toMillis();
});
Вопросы:
- имеет ли log4j 2.x такую или похожую функцию?
- может быть, он существует в других библиотеках журналов?
- если нет, можно ли как-нибудь упростить
if (log.isInfoEnabled()) { ... }
?