miércoles, 16 de marzo de 2022

Introducción a jdk14logger

Jdk14Logger es una implementación de la interfaz org.apache.commons.logging.Log, al mismo tiempo es un Wrapper del framework java.util.logging que se introdujeron en la versión Merlin (JDK 1.4).


Handlers

En palabras simples un handler es finalmente una clase responsable de escribir los logs en una salida como un archivo o la consola. Puedes tener varios handlers para una aplicación. Los dos handlers mas usados son:

  • java.util.logging.FileHandler Escribe los logs en un archivo
  • java.util.logging.ConsoleHandler Escribe los logs en la consola
Los handlers se configuran en el archivo de configuración que explicaremos más adelante, si no defines un archivo de configuración por defecto existirá el handler java.util.logging.ConsoleHandler, todos los logs se escribirán en la consola.

Algunas de las propiedades de los handlers son:

  • java.util.logging.FileHandler.level=INFO
  • java.util.logging.FileHandler.limit=5000000
  • java.util.logging.FileHandler.count=10
  • java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
  • java.util.logging.FileHandler.pattern=tes_log
  • java.util.logging.FileHandler.append=false

Loggers

Son los objetos loggers, debes tener cuidado al crear una instancia, te recomiendo crearlo de la siguiente manera

private static final Logger logger = Logger.getLogger(Database.class.getCanonicalName());

Los loggers quedarán organizados de forma jerárquica según los paquetes en donde se encuentren 

Levels

java.util.logging.Level define diferente niveles de logging. Hay 7 niveles de logging en Java

  • SEVERE (el mas alto)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST

Hay otros dos niveles de logging, OFF que "apaga o ignora" todas las sentencias de logging y ALL que registra todas las sentencias de logging.

Te recomiendo probar todos los niveles de logging para que puedes comprender mejor su funcionamiento y prioridad.


Jerarquía de Levels

Los Levels son muy flexible y debes tener claro como es la Jerarquía

  • .level Es el level global y tiene la jerarquía más alta
  • handler.level Cada handler puede tener un level propio, este no debe ser más alto que el global. Por ejemplo si en global tienes el level INFO entonces el handler puede tener los levels INFO, WARNING Y SEVERE
  • logger.level Cada Logger puede tener un level propio, este no debe ser más alto que el level del handler

Te dejo un ejemplo de un archivo de configuración


Referencia

https://sematext.com/blog/java-logging/#toc-javautillogging-2

https://medium.com/el-acordeon-del-programador/logs-en-java-con-java-util-logging-d344ae2ba7bc