Logger ou PrintStackTrace para mensagens de erro

Olá!

Gostaria de saber se realmente esse caso é uma boa prática ou não.

“Usar Logger ou PrintStackTrace para apresentar logs de erro em um programa”.

Alguns programadores com mais experiencia que eu em meu trabalho, já me responderam que o indicado é usar PrintStackTrace, outros já falaram que não, o uso do Logger é mais indicado.
Bom já pesquiser a respeito na internet e muita gente defende o uso do Logger e falam que é uma má prática usar printStackTrace.
Bom nisso tudo fiquei indeciso e não compreendi o porque de um ser mais indicado que o outro e etc.

Exemplo

try {
      //  códigos

    } catch (Exception e) {
        LOGGER.log(Level.ERROR, "ERRO: " + ExceptionUtils.getFullStackTrace(e), e);
    }

try {
        // códigos

    } catch (Exception e) {
        e.printStackTrace();
    }

Olá,

ao utilizar e.printStackTrace(); vc esta escrevendo com System.err, com isso vc não consegue “manipular” suas exceções, quero dizer fica meio “engessado”.

utilizando o LOGGER.log(…) vc consegue utilizar algum framework de loging tipo Log4j, logback, etc… com isso vc tem a flexibilidade de manipular seus log de varias maneiras…
por exemplo:

  • Salvar seus logs onde vc quiser
  • Filtar por severidade… Fatal, Error, Warn, Info, etc
  • Escolher qual nivel de log vc quer ver… so Debug, so Info, etc
  • Seu usuario final não vai ver aquela “pilha horivel” do stacktrace
  • pode configirar um formato mais “amigal” para o log
  • entre outros beneficios

sempre opte por utilizar algum framework para manipular seus logs… em sistemas complexos vai te ajudar muito a encontrar erros.

espero ter ajudado!

2 curtidas

Obrigado pela resposta Jeferson_Manetti, ficou bem completa.