Par défaut, l'encodeur Logback utilise un format de date similaire à la norme ISO 8601 . Mais il manque le "T" au milieu entre les portions de date et d'heure. T
facilite l'analyse et est requis par la norme (sauf si les parties privées en conviennent autrement).
Y a-t-il une astuce pour obtenir Logback pour inclure le T
?
Ce…
2006-10-20T14:06:49,812
au lieu de cela…
2006-10-20 14:06:49,812
Je suppose que je pourrais recréer le format entier tout en ajoutant un "T", mais je me demande s'il existe un moyen plus simple.
Il y a un rapport de bogue à ce sujet sur page JIRA de Logback . Il n'y a pas eu beaucoup de développement depuis 24/Feb/10 3:57 PM
. Je viens de voter pour attirer l'attention. Tu devrais aussi.
Je fournirais mon propre format de date qui correspond à ISO 8601 .
Cela devrait faire l'affaire:
<pattern>%d{"yyyy-MM-dd'T'HH:mm:ss,SSS"} [%thread] %-5level %logger{35} - %msg %n
</pattern>
Les ""
Sont nécessaires pour faire fonctionner le ,
Comme décrit dans la documentation .
Cet élément <pattern>
Appartient à votre paramètre de configuration Logback. Voici un exemple de fichier 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>
Pour être plus entièrement conforme à la norme ISO 8601 et pour une journalisation plus utile, vous devez inclure un fuseau horaire.
EDIT (Michael-O, 2014-06-15): C'est pas vrai, le fuseau horaire est absolument facultatif.
Pour inclure un fuseau horaire, passez un deuxième argument ( voir doc ) au %date
. Passez le nom propre d'un fuseau horaire . Évitez les codes de fuseau horaire à trois ou quatre lettres tels que "EST" car ils ne sont ni uniques ni normalisés. Par exemple, passez Australia/Perth
. Généralement, pour la journalisation, nous voulons UTC (GMT), c'est-à-dire sans aucun décalage. Dans ce cas, passez UTC
.
Vous pouvez afficher le décalage de fuseau horaire en nombre d'heures et de minutes dans le cadre de la date-heure dans le journal. Ajoutez un X
pour afficher le décalage de fuseau horaire dans le cadre de la valeur date/heure.
Ce…
%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}
… Produit…
2014-04-16T09:59:24,009Z
XXX
fonctionne dans Java 7 et 8. Dans les versions antérieures de Java, vous pouvez peut-être utiliser un Z
dans la définition de format pour générer un décalage nombre qui manque de deux points.