J'ai un appendend log4j défini comme: dans ma classe, je reçois l'enregistreur comme: p> Ceci fonctionne correctement . Je veux avoir un enregistreur qui enregistre toujours certains messages (pas d'erreur, mais des choses comme la durée de la durée des transactions). Si je les écris au débogage ou à des informations, je ne les verrai pas si le niveau de journal est modifié. Je pense que je peux accomplir cela en utilisant un autre appendeur qui écrit au même fichier. P> est-ce possible pour que deux annexes écrivent dans le même fichier? Comment obtiendrais-je l'instance de Logger où je souhaite utiliser l'appendendement de débogage normal et l'appendeur transactionnel dans la même classe? Ces messages ne seront pas tous dans le même paquet, je ne peux donc pas configurer un certain package pour toujours connecter. Devrai-je avoir ces appendeurs écrire dans différents fichiers ou puis-je les récupérer à la fois dans le code et avoir quelque chose comme: p> update strong>
Je pouvais écrire à deux fichiers journaux différents si nécessaire, mais comment puis-je obtenir l'instance Logger dans ma classe? Je ne veux pas configurer un package / classe pour toujours utiliser un appendais sur l'autre car les classes devront enregistrer des messages d'information / d'erreur et des messages "toujours" transactionnels pendant une course normale. Y a-t-il un moyen d'accomplir ce dont j'ai besoin même s'il écrit à deux fichiers journaux différents? P> p>
4 Réponses :
Je ne pense pas que Log4J prend vraiment en charge deux annexes écrivant dans le même fichier en raison de problèmes de synchronisation. Votre meilleur choix serait, si possible, de passer un interrupteur à slf4j en utilisant LOWBACK Comme votre système de journalisation du backend Etant donné que la connexion est le successeur de Log4J et prend également en charge plusieurs annexes écrivant à un fichier. Découvrez FileAppender et son mode prudent. P>
OK, même si je dois écrire dans un fichier séparé, comment puis-je obtenir les deux instances de l'enregistreur dans mon code? Dois-je spécifier quels packages utiliseront un appendeur sur l'autre? Je ne veux pas que ces classes deviendront que ces classes devront enregistrer des informations / des messages d'erreur ainsi que les lignes "toujours".
C'est correct. Il est possible de configurer plusieurs appendeurs pour le même fichier qui fonctionnera pendant un temps, mais la rotation des journaux entraînera l'un des annexes qui écrivent dans un ancien fichier et éventuellement pour enregistrer les messages perdues.
Autant que je sache, l'instanciation des enregistreurs avec un identifiant d'emballage et de classe est juste une convention. Vous êtes libre de créer plusieurs instances d'enregistreur dans n'importe quelle classe et de leur donner n'importe quel identifiant.
Log alwaysLogger = LogFactory.getLog("a.b.c.ALWAYS"); Log sometimesLogger = LogFactory.getLog("a.b.c.SOMETIMES");
Oui. Vous pouvez "contourner" pour avoir 2 annexes écrivant dans le même fichier. P>
Checkout Ce code + Exemple : p>
Toute question bienvenue. P>
J'ai ceci pour travailler en utilisant par exemple par exemple p> Vous pouvez ajouter d'autres filtres ou quoi que ce soit les autres annexes. Pour autant que je sache avec ma propre application, les journaux semblent rouler et les filtres du Appender fonctionnent comme prévu. P> p> asyncapcender code> s. J'avais mon appendeur principal qui spécifiait un fichier à se connecter et que mes autres appendiers se réfèrent à cela.