2012-05-10 15 views
5

El archivo de configuración de registro de Java me permite definir las propiedades de un registrador con nombre, p. Ej.Cómo configurar las propiedades de un FileHandler específico

name.heikoseeberger.heikotron.level = FINE 
name.heikoseeberger.heikotron.handlers = java.util.logging.FileHandler 

Hasta ahora, muy bien. Ahora me gustaría configurar ese particularFileHandler, p. con un archivo de salida específico. Por desgracia, sólo sé cómo configurar el "global" FileHandler, que ya está presente en el fichero de configuración:

java.util.logging.FileHandler.pattern = %h/java%u.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

no quiero configurar éste, pero la instancia que está asociada con mi costumbre Logger. Ya he intentado lo siguiente, pero sin éxito:

name.heikoseeberger.heikotron.java.util.logging.FileHandler.pattern = %h/heikotron.log 
name.heikoseeberger.heikotron.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

¿Es posible en absoluto para establecer las propiedades de FileHandler casos específicos? En caso afirmativo, ¿cómo se deben identificar/nombrar?

Respuesta

0

No lo creo posible. Si revisa el código fuente para el FileHandler pronto determinar que utiliza la cadena "java.util.logging.FileHandler.pattern "para determinar el patrón del archivo que se utilizará para fines de registro

private void configure() { 
     LogManager manager = LogManager.getLogManager(); 

     String cname = getClass().getName(); 

     pattern = manager.getStringProperty(cname + ".pattern", "%h/java%u.log"); 
     limit = manager.getIntProperty(cname + ".limit", 0); 
     //... 
    } 

Como tal, la configuración que usted está poniendo en el archivo incluso no se ha tenido en cuenta por el controlador.

me parece que los manejadores no son conscientes de la existencia de cualquier registrador particular (es decir name.heikoseeberger.heikotro n), sólo saben cómo publicar un determinado LogRecord.

Por lo que puedo ver, los controladores de una parte icular logger es creado por el LogManager, invocando reflexivamente su constructor predeterminado, como tal, cuando se está creando un controlador determinado, desconoce para qué registrador particular se ha solicitado, es por eso que todas sus propiedades se establecen a través de su propio nombres de clase y no a través del nombre del registrador.

1

Esto se hace utilizando la opción config descrita en la documentación de la clase de nivel superior del LogManger. Cree una clase pública nombrada con un constructor público e invoque todas las llamadas java que necesita realizar para configurar su controlador. Luego, en sus propiedades de registro, dirija LogManager para cargar su clase que creó para configurar su controlador. De lo contrario, puede subclasificar el controlador de archivos, que creará un espacio de nombres personalizado para configurar.

+0

'A property "config". Esta propiedad está destinada a permitir la ejecución de código de configuración arbitrario. Esto podría usarse para cargar otro archivo de configuración que tenga asignaciones de clase a nombre de archivo –

Cuestiones relacionadas