write vogella util logger log example java properties java.util.logging

vogella - Cargue java.util.logging.config.file para la inicialización predeterminada



logger java example (3)

El registro de Java no busca un disco en todo el disco duro; Hay reglas muy simples de cómo se buscan los archivos. Quieres que Java vea que los dos archivos se pertenecen, pero no lo dijiste en ninguna parte. Ya que Java no ve ninguna conexión entre el archivo de propiedades y su clase, excepto que están en la misma carpeta en su disco, no puede encontrar el archivo.

-Djava.util.logging.config.file=log.properties solo funciona si el archivo log.properties encuentra en el directorio actual del proceso de Java (que puede ser bastante aleatorio). Así que deberías usar un camino absoluto aquí.

Una solución alternativa sería mover el archivo logging.properties a $JAVA_HOME/lib/ (o editar el archivo que debería estar allí). En ese caso, no es necesario establecer una propiedad del sistema.

Estoy intentando cargar un archivo log.properties personalizado cuando se inicia mi aplicación.

Mi archivo de propiedades está en el mismo paquete que mi clase principal, por lo que asumí que el parámetro de línea de comando -Djava.util.logging.config.file=log.properties debería obtener el archivo de propiedades cargado.

Pero las propiedades solo se cargan cuando especifico una ruta absoluta completa al archivo de propiedades. ¿Alguna sugerencia de cómo usar un camino relativo?


Puede cargar dinámicamente los archivos de propiedades java.util.logging desde una ruta relativa muy fácilmente. Esto es lo que pongo dentro de un bloque static {} en mi clase Main . Coloque su archivo logging.properties en el default package y podrá acceder a él muy fácilmente con el siguiente código.

final InputStream inputStream = Main.class.getResourceAsStream("/logging.properties"); try { LogManager.getLogManager().readConfiguration(inputStream); } catch (final IOException e) { Logger.getAnonymousLogger().severe("Could not load default logging.properties file"); Logger.getAnonymousLogger().severe(e.getMessage()); }


util logging no se carga desde classpath, necesita una ruta absoluta, razón por la cual otros paquetes de registro como log4j son mucho más fáciles de configurar y mejores para aplicaciones web donde es difícil obtener rutas abs.

Esto no se explica en absoluto en el doco java.util.logging.LogManager.