Log4j - plusieurs appenders écrire dans le même fichier avec toujours les journaux
J'ai un log4j appender défini comme:
log4j.logger.com.example = DEBUG, filelog
log4j.appender.filelog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.filelog.File=c:/app.log
log4j.appender.filelog.layout=org.apache.log4j.PatternLayout
log4j.appender.filelog.layout.ConversionPattern=%d | %m%n
log4j.appender.filelog.DatePattern=.dd-MM-yyyy
Dans ma classe, j'ai l'enregistreur comme:
Log logger = LogFactory.getLog(getClass());
Cela fonctionne correctement. Je veux avoir un enregistreur qui enregistre toujours les certains messages (pas des erreurs, mais des choses comme combien de temps a pas eu de transactions). Si j'écris ces à DÉBOGUER ou INFO, je ne les vois pas si le niveau de journalisation est changé. Je pense que je peux accomplir cela en utilisant un autre appender qui écrit dans le même fichier.
Est-ce possible d'avoir deux appenders écrire dans le même fichier? Comment puis-je obtenir de l'enregistreur exemple lorsque je veux utiliser le débogage normal appender et le transactionnel appender dans la même classe? Ces messages ne seront pas tous dans le même paquet, donc je ne peux pas configurer un paquet de toujours vous connecter. Vais-je avoir ces appenders écrire dans des fichiers différents, ou puis-je les récupérer à la fois dans le code et avoir quelque chose comme:
Log alwaysLogger = LogFactory.getLog(ALWAYS);
alwaysLogger.debug("This message will always be written regardless of the level set on the filelog appender");
Mise à jour
Je pourrais écrire à deux différents fichiers de log si nécessaire, mais comment pourrais-je obtenir de l'enregistreur de données d'instance de ma classe? Je ne veux pas configurer un paquet/classe de toujours utiliser un appender-dessus de l'autre que les classes auront un journal d'informations/messages d'erreur et le transactionnel "toujours" des messages lors d'une exécution normale. Est-il un moyen pour accomplir ce dont j'ai besoin, même si il écrire à deux différents fichiers de log?
OriginalL'auteur David Buckley | 2010-10-28
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que log4j vraiment prend en charge deux appenders écrire dans le même fichier en raison de problèmes de synchronisation. Votre meilleur pari serait, si possible, faire un interrupteur pour slf4j à l'aide de Logback que votre backend système de journalisation depuis Logback est log4j son successeur et prend également en charge plusieurs appenders l'écriture d'un fichier. Découvrez FileAppender et il est prudent de mode.
Mise à jour: à partir de votre description, il semble que vous devriez également vérifier marqueurs. Vous avez seulement besoin d'un enregistreur exemple, et vous pouvez obtenir plus de contrôle de précision, à l'aide de marqueurs, parce qu'avec eux, vous disent en substance: "ce journal déclaration a un but spécial, et doit être connecté à l'aide d'un approprié appender". Vous pouvez également consulter le journal appender l'additivité, qui est généralement utilisé lorsque vous utilisez deux ou plusieurs appenders pour une instruction de journal.
Cela est correct. Il est possible de configurer plusieurs appenders pour le même fichier qui va travailler pour un temps, mais la rotation des journaux entraînera dans l'un des appenders d'écrire dans un vieux dossier, et finalement à se connecter perte des messages.
OriginalL'auteur darioo
Autant que je sache, l'instanciation de bûcherons avec un paquet & identificateur de classe n'est qu'une convention. Vous êtes libre de créer plusieurs enregistreur de cas dans n'importe quelle classe et de leur donner un identificateur.
Que pour écrire dans le même fichier, je n'ai pas essayé, mais il devrait être possible, au moins à partir d'un seul fil. Vous pouvez avoir besoin d'écrire votre propre appender plutôt que de compter sur l'un de ceux par défaut.
OriginalL'auteur Synesso
J'ai eu ce travail en utilisant
AsyncAppender
s. J'ai eu mon principal appender qui a spécifié un fichier de log, et a mes autres appenders référence.par exemple
Vous pouvez ajouter d'autres filtres, ou n'importe quoi d'autre appenders. Aussi loin que je peux dire avec ma propre application, les journaux semblent rouler, et l'appender filtres fonctionnent comme prévu.
OriginalL'auteur Fodder
Oui. Vous pouvez "solution de contournement" pour avoir 2 appenders écrire dans le même fichier.
Caisse code + exemple:
Des questions de bienvenue.
OriginalL'auteur Andrés