2012-05-10 7 views
5

Il file di configurazione della registrazione Java consente di definire le proprietà di un logger denominato, ad es.Come configurare le proprietà di uno specifico FileHandler

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

Finora, tutto bene. Ora mi piacerebbe configurare quel particolareFileHandler, ad es. con un file di output specifico. Purtroppo so solo come configurare il "globale" FileHandler, che è già presente nel file di configurazione:

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 

Non voglio configurare questo, ma l'istanza che è associato con mia abitudine Registratore di cassette. Ho già provato quanto segue, ma senza successo:

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

è possibile a tutti di impostare le proprietà di specifiche FileHandler casi? Se sì, come dovrebbero essere identificati/nominati?

risposta

0

Non credo sia possibile. Se si esamina il codice sorgente per il FileHandler presto stabilire che utilizza la stringa "java.util.logging.FileHandler.pattern "per determinare il modello del file da utilizzare per scopi di registrazione

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); 
     //... 
    } 

Come tale, la configurazione che si sta mettendo in file non è nemmeno stato preso in considerazione dal gestore.

mi sembra che i gestori sono a conoscenza dell'esistenza di un particolare strumento (cioè name.heikoseeberger.heikotro n), sanno solo come pubblicare un dato LogRecord.

Per quanto posso vedere, i gestori di una parte i logger icular vengono creati dal LogManager, richiamando in modo riflessivo il loro costruttore predefinito, in quanto tale, quando viene creato un determinato gestore, non è a conoscenza di quale particolare logger è stato richiesto, ecco perché tutte le loro proprietà sono impostate tramite il proprio nomi di classi e non attraverso il nome del logger.

0

Se ho capito bene, stai provando a scrivere in diversi file di registro usando il pacchetto java.util.logging. Questo non può essere fatto fuori dalla scatola senza estenderlo.

Se non è possibile passare ad un altro quadro di registrazione come Logback, controllare risposta a java util logging.properties: How to log to two different files e vedere se si adatta alle tue esigenze.

1

L'operazione viene eseguita utilizzando l'opzione config descritta nella documentazione della classe di livello superiore di LogManger. Crea una public named class con un costruttore pubblico e richiama tutte le chiamate java che devi fare per configurare il tuo gestore. Quindi, nelle proprietà di registrazione, indirizzare LogManager per caricare la classe creata per configurare il gestore. Altrimenti puoi creare una sottoclasse di gestore file che creerà uno spazio dei nomi personalizzato da configurare.

+0

'Una proprietà "config". Questa proprietà ha lo scopo di consentire l'esecuzione di codice di configurazione arbitrario. ' Quindi questo potrebbe essere usato per caricare un altro file di configurazione che ha una mappatura del nome della classe –

Problemi correlati