Como registrar avisos repetidos apenas uma vez

Existe um padrão que acontece de vez em quando. Eu tenho um método chamado várias vezes e contém este trecho:

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

Em seguida, meu arquivo de log está cheio de avisos centenas de vezes. Eu sei que possogrep, mas me pergunto se existe uma maneira melhor de ver esse aviso apenas uma ve

Nota: a duplicação de mensagens é um comportamento correto por padrão, então não se trata de evitar mensagem de log duplicada não intencional. Marquei minha pergunta como log4j, mas estou aberto a outras estruturas de log java.