Basée sur le temps de déclenchement de la politique dans log4j2
Je suis en train de créer de nouveaux fichiers journaux sur une base horaire. Je suis à l'aide de TimeBasedTriggerringPolicy de lo4j2 dans RollingFileAppender. Ci-dessous l'exemple de configuration xml code que j'ai prises de log4j2 site officiel.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
**
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
**
<SizeBasedTriggeringPolicy size="250 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
Dans l'intervalle attribut, j'ai mis 1, ce qui signifie 1 heure.
Pourtant, mon fichier ne doit pas rouler chaque 1 heure.
Merci de m'aider à trouver l'erreur.
Remarque : j'ai inclus beta9 de log4j2 (qui est la dernière)
OriginalL'auteur user1890780 | 2013-10-10
Vous devez vous connecter pour publier un commentaire.
1 ici indique que 1 jour et 1 heure. J'ai manuellement testé avec, en dessous de configuration.
Pour les tests manuels, j'ai changer la date et l'heure système.
Tout d'abord, essayez avec une augmentation de 1 heure. Les fichiers journaux générés, mais pas que par l'attente.
Puis changer la date du système, en hausse de 1 jour, puis voir le résultat.
Supposons que le dernier fichier journal (abc.journal) le jour 29-Oct est de 50 KO. Configuration de la taille est de 100 KO. Si l'on change le jour (+1 jour), puis sur exécuter.
Puis, le dernier fichier sera renommé 29-Oct-(certains numéro de séquence).journal (50 KO fichier qu'il est copié) et le nouveau fichier sera créé avec abc.journal
J'ai essayé avec le servlet simple avec ci-dessous de configuration dans web.xml
garder log4j2.xml dans le dossier src. log4j2.xml n'est pas chargé si nous le gardons dans le classpath.
et puis-je demander ce qu'est remplacé par %i dans le modèle de fichier
Je crois que le %i va incrémenter si vous roulez plus basée sur le fichier journal devient plus grande que la limite de taille, pas de temps.
OriginalL'auteur Zubin Shah
Comme Abid mentionné, la valeur de l'intervalle est interprété dans le contexte du modèle spécifié dans le cadre de filePattern. Il commence avec la dénomination la plus basse. Par exemple,si le modèle contient S, la fréquence sera dans l'ordre de la milliseconde. Il prend en charge le modèle de date comme décrit en détail dans le cadre de SimpleDateFormat java doc http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
OriginalL'auteur rajnish
Log4j documentations:
Vous devez changer le modèle de nom de fichier si vous souhaitez créer à chaque heure.
OriginalL'auteur Amin Sh
Vous avez un non-vide de fichier journal (sinon il n'y a rien à se rouler)?
Noter que même si le nom est "dispositions de temps..." Il ne sera pas réellement rouler à l'heure spécifiée, mais lors de la première connexion de l'événement qui arrive après l'heure de seuil a été dépassé. Pouvez-vous essayer avec un petit programme de test qui enregistre quelque chose après 61 minutes et voir si le problème persiste?
Si elle ne roule plus avec le test ci-dessus, le programme, vous pourriez avoir trouvé un bug. Dans ce cas, merci de le soulever à la log4j bug tracker. (Assurez-vous de fixer le programme de test, l'équipe peut utiliser ou de reproduire le problème).
OriginalL'auteur Remko Popma
Selon votre TimeBasedTriggeringPolicy de configuration, enregistreur de ne remplir les journaux tous les jours et pas à chaque heure.
Autant que je sache,Vous pouvez obtenir la fonctionnalité en modifiant la filePattern de HH(Heures) à la dd(Jours).
J'ai modifié votre config.xml. Essayez Cette
Pour plus de détails, consultez le cette
Espère que ce sera séance d'entraînement pour vous aussi.
OriginalL'auteur Akshay Kumar