Как записать в лог повторяющиеся предупреждения только один раз

Есть одна закономерность, которая возникает время от времени. У меня есть метод, вызываемый много раз, и он содержит этот фрагмент:

Foo foo = getConfiguredFoo();
if (foo == null) {
  logger.warn("Foo not configured");
  foo = getDefaultFoo();
}

Тогда мой файл журнала загромождается этим предупреждением сотни раз. Я знаю, что могу grep его удалить, но мне интересно, есть ли лучший способ увидеть это предупреждение только один раз.

Примечание: дублирование сообщений является правильным поведением по умолчанию, поэтому речь не идет о предотвращении непреднамеренного дублирования сообщений журнала. Я пометил свой вопрос как log4j, но я открыт для других java-фреймворков логирования.

15
задан Community 23 May 2017 в 11:48
поделиться