2012-02-02 21 views
8

Quiero que el registro contenga entradas de fecha de la zona horaria específica. ¿Hay alguna forma de forzar la zona horaria en log4j.properties?Registro Apache Log4j con zona horaria específica

Ahora estoy usando JDK 1.5, Como ya saben, hay un error de zona horaria en JDK 1.5 que se elimina en JDK 1.5. En el caso de JDK 1.5, por defecto muestra la zona horaria "GMT". Quiero configurar en Log4j mi zona horaria específica.

+1

ser más específicos, ¿cómo se ve ahora y cómo quieres que se vea como? – tartak

+0

@CatalinCiobanu ¿Está claro ahora? –

Respuesta

0

Utilice la org.apache.log4j.helpers.DateLayout como clase de diseño y la propiedad timeZone en ella.

0

Incluya un argumento date en su ConversionPattern. A partir de la fecha PatternLayout documentation:

-

Se utiliza para la producción de la fecha del registro de eventos en la zona horaria local. Para mostrar la fecha en tiempo universal, utilice el patrón %utcdate. El especificador de conversión de fecha puede ir seguido de un especificador de formato de fecha encerrado entre llaves. Por ejemplo, %date{HH:mm:ss,fff} o %date{dd MMM yyyy HH:mm:ss,fff}. Si no se proporciona un especificador de formato de fecha, entonces se asume el formato ISO8601 (Iso8601DateFormatter).

El especificador de formato de fecha admite la misma sintaxis que el patrón de tiempo cadena del ToString.

Para obtener mejores resultados, se recomienda utilizar log4net date formateadores. Estos se pueden especificar utilizando una de las cadenas "ABSOLUTO", "FECHA" e "ISO8601" para especificar AbsoluteTimeDateFormatter, DateTimeDateFormatter y respectivamente Iso8601DateFormatter. Por ejemplo, %date{ISO8601} o %date{ABSOLUTE}.

Estos formateadores de fecha dedicados funcionan significativamente mejor que ToString.

+2

Tenga en cuenta que esto parece ser para .net, no estoy seguro de que se aplique a Java, o al menos no puedo encontrar un equivalente, aún así estoy buscando. –

16

Esto le permitirá ver información de zona horaria en cada línea de sus registros:

%d{yyyy-MM-dd/HH:mm:ss.SSS/zzz} 

El truco es incluir 'zzz' en el patrón ya que según Javadoc para java.text.SimpleDateFormat (http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html), ese es el código para la zona horaria. Log4J usa las mismas reglas que SimpleDateFormat.

hay más detalles sobre el en el Javadoc Log4J:

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

Busque la fila de la tabla donde el 'conversión de caracteres' es la letra 'd'.

+0

siempre me dará GMT en jdk 1.5, por eso quiero mi zona horaria específica –

+0

Oh. Lo siento. En ese caso, esta es su solución (necesita un contenedor "extras"): http://stackoverflow.com/questions/1785725/specify-time-zone-of-log4js-date –

+0

Citando una parte importante del javadoc de 'PatternLayout' : Aunque forma parte del estándar JDK, el rendimiento de SimpleDateFormat es bastante pobre. Para obtener mejores resultados, se recomienda utilizar los formateadores de fecha log4j. Estos pueden especificarse utilizando una de las cadenas "ABSOLUTE", "DATE" e "ISO8601" para especificar AbsoluteTimeDateFormat, DateTimeDateFormat y respectivamente ISO8601DateFormat. Por ejemplo,% d {ISO8601} o% d {ABSOLUTE}. –

4

La mejor manera es usar Apache Extras™ for Apache log4j™ Y reemplace The PatternLayout normal por org.apache.log4j.EnhancedPatternLayout haciendo lo siguiente si se utiliza un archivo de propiedades:

//log4j.appender.xxx.layout = org.apache.log4j.PatternLayout 
//Replaced by 
log4j.appender.xxx.layout = org.apache.log4j.EnhancedPatternLayout 

continuación, puede utilizar% {d} {ISO8601 GMT} en lugar de% d en el ConversionPattern para mostrar su fecha en el formato GMT. Cualquier zona horaria puede especificarse en lugar de GMT

1

Puede agregar siguiente línea

log4j.appender.S.layout.ConversionPattern= %d{yyyy-MM-dd HH:mm:ss zzz}{GMT} %-5p [%t][%c:%M(%L)] %m%n 
Cuestiones relacionadas