2009-04-15 12 views
27

Netbeans asperja cuidadosamente Logger.getLogger (this.getClass(). GetName()) .log (Level. [...] declaraciones en catch blocks. Ahora me gustaría para apuntarlos a un archivo (y a la consola).Cómo obtener la salida del registrador java al archivo de forma predeterminada

Cada tutorial de inicio de sesión y tal solo yo le dice cómo obtener un registrador específico para su salida a un archivo, pero supongo que hay una manera mejor que corregir cada uno generado automáticamente instrucción de registro? Configuración de un controlador para algún tipo de registrador de raíz o algo?

+2

¿El IDE está generando bloques catch que "comen" excepciones? ¡Despreciable! Esto explica mucho. – erickson

Respuesta

39

acabo de añadir lo siguiente al inicio

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

puede especificar sus propios valores para LOG_SIZE y LOG_ROTATION_COUNT

Es posible que necesite ajustar el nivel de registro para adaptarse.

+0

Gracias a todos. Esto se parece a lo que estaba buscando. – Bloodboiler

+1

Haciendo esto solo me da un "Void no se puede desreferenciar" – Dan

2

Debe definir dónde se está escribiendo el registro en el archivo de configuración del registrador Por ejemplo, si usa log4j, log4j.xml (o log4j.properties) archivo contendrá dicha información.

Por ejemplo, aquí es un simple archivo log4j.xml que registra directamente en un archivo (mi-app.log) y en la consola:

<?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

Creo que, a partir de las etiquetas, el que pregunta está utilizando las clases en java.util.logging en lugar de log4j –

+2

No está usando log4j: netbeans genera código para java.util.logging –

Cuestiones relacionadas