java - example - Haga que Logback incluya la "T" entre la fecha y la hora en su formato de "% de fecha" para el estricto cumplimiento de ISO 8601
logback spring boot (1)
De forma predeterminada, el codificador Logback utiliza un formato de fecha similar al estándar ISO 8601 . Pero carece de la "T" en el medio entre las partes de fecha y hora. La T
facilita el análisis y es requerida por el estándar (a menos que las partes privadas acuerden lo contrario).
¿Hay algún truco para conseguir que Logback incluya la T
?
Esta…
2006-10-20T14:06:49,812
en lugar de esto…
2006-10-20 14:06:49,812
Supongo que podría volver a crear todo el formato al agregar una "T", pero me pregunto si hay alguna forma más simple.
Informe de error
Hay un informe de error sobre esto en la página JIRA de Logback . No ha habido mucho desarrollo desde el 24/Feb/10 3:57 PM
. Acabo de votar para llamar la atención. Tu también deberías.
Yo proporcionaría mi propio formato de fecha que coincide con ISO 8601 .
Insertar "T"
Esto debería funcionar:
<pattern>%d{"yyyy-MM-dd''T''HH:mm:ss,SSS"} [%thread] %-5level %logger{35} - %msg %n
</pattern>
Los ""
son necesarios para hacer que el ,
funcione como se describe en la documentation .
Ese elemento <pattern>
pertenece a su configuración de configuración de Logback. Aquí hay un ejemplo de archivo logback.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<!-- Strangely, Logback lacks a built-in formatter for ISO 8601. So, roll our own. -->
<Pattern>%date{"yyyy-MM-dd''T''HH:mm:ss,SSSXXX", UTC} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<logger name="com.example" level="TRACE"/>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Zona horaria
Para ser más compatible con ISO 8601 y para un registro más útil, debe incluir una zona horaria.
EDITAR (Michael-O, 2014-06-15): Eso no es cierto, la zona horaria es absolutamente opcional.
Para incluir una zona horaria, pase un segundo argumento ( ver documento ) a la %date
. Pase el nombre propio de una zona horaria . Evite los códigos de zona horaria de tres o cuatro letras, como "EST", ya que no son únicos ni están estandarizados. Por ejemplo, pase Australia/Perth
. Generalmente para el registro queremos tiempo UTC (GMT), es decir, sin ningún desplazamiento. En ese caso, pase UTC
.
Puede mostrar el desplazamiento de la zona horaria como el número de horas y minutos como parte de la fecha y la hora en el registro. Agregue una X
para mostrar el desplazamiento de la zona horaria como parte del valor de fecha y hora.
Esta…
%date{"yyyy-MM-dd''T''HH:mm:ss,SSSXXX", UTC}
... produce ...
2014-04-16T09:59:24,009Z
La XXX
funciona en Java 7 y 8. En versiones anteriores de Java, es posible que pueda usar una Z
en la definición de formato para generar un número de compensación que carece de dos puntos.