Exceções de log usando SLF4J
1. Visão geral
Neste tutorial rápido, mostraremos como registrar exceções em Java usando a APISLF4J. Usaremos a APIslf4j-simple como a implementação de registro.
Você pode explorar diferentes técnicas de registro em um de nossosprevious articles.
2. Dependências do Maven
Primeiro, precisamos adicionar as seguintes dependências ao nossopom.xml:
org.slf4j
slf4j-api
1.7.25
org.slf4j
slf4j-simple
1.7.25
As versões mais recentes dessas bibliotecas podem ser encontradas emMaven Central.
3. Exemplos
Normalmente, todas as exceções são registradas usando o métodoerror() disponível na classeLogger. Existem algumas variações desse método. Vamos explorar:
void error(String msg);
void error(String format, Object... arguments);
void error(String msg, Throwable t);
Vamos primeiro inicializar oLogger que vamos usar:
Logger logger = LoggerFactory.getLogger(NameOfTheClass.class);
Se precisarmos apenas mostrar a mensagem de erro, podemos simplesmente adicionar:
logger.error("An exception occurred!");
A saída do código acima será:
ERROR packageName.NameOfTheClass - An exception occurred!
Isto é bastante simples. Mas, para adicionar informações mais relevantes sobre a exceção (incluindo o rastreamento de pilha), podemos escrever:
logger.error("An exception occurred!", new Exception("Custom exception"));
A saída será:
ERROR packageName.NameOfTheClass - An exception occurred!
java.lang.Exception: Custom exception
at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)
Na presença de vários parâmetros, se o último argumento em uma instrução de log for uma exceção, o SLF4J presumirá que o usuário deseja que o último argumento seja tratado como uma exceção em vez de um parâmetro simples:
logger.error("{}, {}! An exception occurred!",
"Hello",
"World",
new Exception("Custom exception"));
No snippet acima, a mensagemString será formatada com base nos detalhes do objeto transmitido. Usamos chaves como marcadores para os parâmetrosString passados para o método.
Nesse caso, a saída será:
ERROR packageName.NameOfTheClass - Hello, World! An exception occurred!
java.lang.Exception: Custom exception
at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)
4. Conclusão
Neste tutorial rápido, descobrimos como registrar exceções usando a API SLF4J.
Os trechos de código estão disponíveis emGitHub repository.