Spécifier le fuseau horaire de log4j date
Est-il possible de spécifier le fuseau horaire que log4j va utiliser? J'ai besoin de la date dans le fichier journal doit être un fuseau horaire différent de l'application. log4j est PatternLayout
utilise SimpleDateFormat
. Malheureusement, il ne semble pas être un moyen de contrôler SimpleDateFormat
'fuseau horaire via la chaîne de modèle (DateFormat
a setTimeZone
méthode mais ça n'aide pas).
J'ai regardé log4j source et SimpleDateFormat
est instiantiated dans PatternParser.finalizeConverter
. Malheureusement il n'y a pas un moyen facile d'obtenir une prise de la DateFormat
pour définir le fuseau horaire.
OriginalL'auteur Steve Kuo | 2009-11-23
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez le Log4J extras fichier JAR sur votre classpath, le EnhancedPatternLayout classe prend en charge cette option de configuration. Voir la Javadoc à ce lien. Il est traité dans le cadre de l' %d modèle de composant comme ceci:
Vous pouvez télécharger les extras paquet ici.
depuis 1.2.16 c'est une partie de lui-même log4j
le lien est mort
OriginalL'auteur khill
Mon Cas...
doit changer la patternLayout à EnhancedPatternLayout.
(log4j-1.2.17.jar)
log4j.appender.fichier de log.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.fichier de log.de mise en page.ConversionPattern=[%d{ISO8601}{GMT+9}]%-5p - %m%n
OriginalL'auteur 10bosal
Le journal du modèle ci-dessus a de bonnes idées mais pas entièrement correct (vous n'obtenez pas de timestamp dans le journal).
Utilisez ce modèle pour assurer que:
%d{ISO8601}{America/New_York} %p [%c] - %m%n
et
%d{ISO8601}{GMT-5} %p [%c] - %m%n
OriginalL'auteur Ivan Digital
Il est préférable d'utiliser quelque chose comme {America/New_York} plutôt que {GMT-5}, car en spécifiant un fuseau horaire automatique, un ajustement sera effectué si l'heure d'été est opérationnel. La spécification de quelque chose comme GMT-5 sera tout simplement d'ajuster le fuseau horaire GMT par la quantité spécifiée de heures.
OriginalL'auteur B5A7
Aussi si tu veux dinamicaly obtein le fuseau horaire par défaut, vous pouvez étendre EnhancedPatternLayout et remplacer la méthode "setConversionPattern" comme ceci:
OriginalL'auteur avallone