Java:
Registro de Logs
Como fazer:
Aqui está uma maneira simples de começar com logística em Java usando o pacote integrado java.util.logging
.
import java.util.logging.Logger;
import java.util.logging.Level;
public class AppLogging {
private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
public static void main(String[] args) {
LOGGER.info("Registrando uma mensagem no nível INFO");
try {
int division = 10 / 0;
} catch (ArithmeticException e) {
LOGGER.log(Level.SEVERE, "Ocorreu uma exceção", e);
}
}
}
Isso produziria uma saída como esta:
Jul 03, 2023 2:00:00 PM AppLogging main
INFO: Registrando uma mensagem no nível INFO
Jul 03, 2023 2:00:00 PM AppLogging main
SEVERE: Ocorreu uma exceção
java.lang.ArithmeticException: / por zero
at AppLogging.main(AppLogging.java:10)
Aprofundando-se
A logística em Java evoluiu bastante. Historicamente, a logística era mais ad-hoc com sistemas de saída e mecanismos escritos pelos próprios usuários. No entanto, a necessidade de padronização levou a APIs de logística como Log4j
e SLF4J
. O pacote java.util.logging
foi introduzido no JDK 1.4, proporcionando uma maneira padronizada de registrar mensagens.
Alternativas ao java.util.logging
(JUL) incluem Log4j 2 e SLF4J. Enquanto o JUL está integrado ao Java e, portanto, não requer dependências adicionais, tanto o Log4j 2 quanto o SLF4J oferecem recursos mais avançados como controle mais granular sobre a configuração de logística, logística assíncrona e melhor desempenho.
Em termos de implementação, a logística pode ser síncrona, onde cada mensagem de log é processada na thread que a gerou, ou assíncrona, onde as mensagens são entregues a uma thread separada. A logística assíncrona pode melhorar o desempenho, mas introduz complexidade, pois é necessário lidar com a concorrência e garantir que as mensagens de log não sejam perdidas em caso de falha na aplicação.