la propiedad patrón ligeramente confuso de FileHandler se puede utilizar para este
handlers=java.util.logging.FileHandler
# Default global logging level.
.level=INFO
#logging level for the foo.bar package
foo.bar.level=CONFIG
java.util.logging.FileHandler.pattern=%h/java%u.log
Un patrón consiste en una cadena que incluye los siguientes componentes especiales que serán reemplazadas en tiempo de ejecución:
"/" la nombre de ruta local de separador
"% t" el sistema de directorio temporal
"% h" el valor de la "user.home" prop sistema Erty
"% g" el número de generación para distinguir los registros rotados
"% u" un número único para resolver conflictos
"%%" se traduce a un único signo de porcentaje "%"
Si desea conectarse a varios archivos a continuación, puede hacerlo por establecer varios controladores para múltiples registradores llamado
#FileHandler for file1
java.util.logging.FileHandler.pattern = logging_property_test.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#FileHandler for file2
logging.FileHandler2.pattern = logging_property_test2.log
logging.FileHandler2.limit = 50000
FileHandler.count = 1
logging.FileHandler2.formatter = java.util.logging.SimpleFormatter
#setting handler for logger1
logging.PropertyTestingLogger.handlers=java.util.logging.FileHandler
#setting handler for logger2
logging.PropertyTestingLogger2.handlers=logging.FileHandler2
como se puede ver el truco es que no hay un logging.FileHandler2 que es una clase personalizada y no hace nada sino que se extiende al FileHandler
package logging;
import java.io.IOException;
import java.util.logging.FileHandler;
public class FileHandler2 extends FileHandler {
public FileHandler2() throws IOException, SecurityException {
super();
}
}
Antecedentes: lamentablemente los creadores de Java no esperaban a nadie para iniciar sesión en varios archivos. Si nos fijamos en la fuente de java.util.logging.FileHandler se dará cuenta, que la propiedad patrón se carga por el nombre de la clase:
public class FileHandler extends StreamHandler {
private String pattern;
private void configure() {
String cname = getClass().getName();
pattern = manager.getStringProperty(cname + ".pattern", "%h/java%u.log");
¿Pero cómo puedo usar estos patrones para especificar que solo tiene efecto para mi logger nombrado (org.imixs.workflow)? No deseo redirigir los mensajes generales del servidor a mi archivo de registro específico de la aplicación. – Ralph
Actualicé mi publicación en consecuencia. En el ejemplo, el nivel de registro predeterminado se establece en información, pero el paquete foo.bar para configurar –
sí, pero mi pregunta es: ¿es posible establecer un archivo de salida separado para el registrador 'foo.bar'. Sé que puede especificar un nivel de registro separado para cada paquete. ¿Pero cómo definir archivos de registro separados? – Ralph