2009-04-15 15 views
27

Netbeans genera minuziosamente Logger.getLogger (this.getClass(). GetName()) .log (Level. [...] istruzioni in blocchi di cattura.Come ottenere l'output del logger java su file per impostazione predefinita

Ogni tutorial di registrazione e solo questo mi dice come ottenere un logger specifico per l'output in un file, ma presumo che ci sia un modo migliore di correggere ogni generato automaticamente dichiarazione di registrazione? Impostazione di un gestore per una sorta di logger di root o qualcosa del genere?

+2

L'IDE sta generando blocchi di catch che "mangiano" le eccezioni? Spregevole! Questo spiega molto. – erickson

risposta

39

Ho appena aggiungere il seguente all'avvio

Handler handler = new FileHandler("test.log", LOG_SIZE, LOG_ROTATION_COUNT); 
Logger.getLogger("").addHandler(handler); 

È possibile specificare i propri valori per LOG_SIZE e LOG_ROTATION_COUNT

potrebbe essere necessario regolare il livello di registrazione per adattarsi.

+0

Grazie a tutti. Questo sembra la cosa che stavo cercando. – Bloodboiler

+1

Questo mi dà solo un "vuoto non può essere dereferenziato" – Dan

2

È necessario definire dove si registra il registro nel file di configurazione del logger. Ad esempio, se si utilizza log4j, un log4j.xml (o log4j.properties) conterrà tali informazioni.

Per esempio, ecco un semplice file log4j.xml che accede direttamente in un file (my-app.log) e nella console:

<?xml version="1.0" encoding="UTF-8"?> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <appender name="rolling" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="my-app.log" /> 
     <param name="DatePattern" value=".yyyy-MM-dd" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" 
       value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [IP=%X{ipAddress}] [user=%X{user}] %m%n" /> 
     </layout> 
    </appender> 

    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" 
       value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [user=%X{user}] %m%n" /> 
     </layout> 
    </appender> 

    <root> 
     <priority value="info" /> 
     <appender-ref ref="console" /> 
     <appender-ref ref="rolling" /> 
    </root> 

</log4j:configuration> 
+4

Penso che dai tag l'interrogante stia usando le classi in java.util.logging piuttosto che log4j –

+2

Non sta utilizzando log4j: netbeans genera il codice per java.util.logging –

Problemi correlati