Tengo un problema estúpido de registro Java: estoy cargando la configuración de registro desde el archivo de configuración de mi aplicación, pero simplemente no registra nada después de leer el archivo (que se parece mucho a los ejemplos) lo encontrará en la red a excepción de la configuración de la aplicación adicional; eliminar esto tampoco ayuda). La línea de registro "inicializando ..." parece estar bien, pero la "aplicación de inicio" y cualquier mensaje adicional no se registran en la consola, ni se crea el archivo de registro. ¿Que me estoy perdiendo aqui?¿Cómo configurar el registro Java usando un archivo de propiedades? (java.util.logging)
El código Logger es así:
...
Logger log = Logger.getLogger("myApp");
log.setLevel(Level.ALL);
log.info("initializing - trying to load configuration file ...");
Properties preferences = new Properties();
try {
FileInputStream configFile = new FileInputStream("/path/to/app.properties");
preferences.load(configFile);
LogManager.getLogManager().readConfiguration(configFile);
} catch (IOException ex)
{
System.out.println("WARNING: Could not open configuration file");
System.out.println("WARNING: Logging not configured (console output only)");
}
log.info("starting myApp");
...
Y este es el fichero de configuración:
appconfig1 = foo
appconfig2 = bar
# Logging
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level = ALL
# File Logging
java.util.logging.FileHandler.pattern = %h/myApp.log
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = INFO
# Console Logging
java.util.logging.ConsoleHandler.level = ALL
Bueno, tiene sentido tener algo que ver con la línea readConfiguration - Pasé por esto con un depurador y todas las propiedades del LogManager se borran después de esta llamada. – VolkA
Oh, sí, lo tengo: estoy usando el mismo flujo de entrada dos veces, así que necesito reposicionarlo usando configFile.reset() - de lo contrario, la llamada loadConfiguration() no tendrá nada que leer. Por cierto. el) fue solo un error de copiado de mi código de trabajo. – VolkA