Dans le fichier log4j.properties, j'ai défini le niveau sur ERREUR. Pour certains utilisateurs, je dois définir Level sur DEBUG. J'ai été en mesure de modifier le niveau de journalisation au moment de l'exécution, mais cela sera activé pour tous les utilisateurs accédant à l'application en même temps. Y at-il une autre méthode par laquelle nous pouvons activer la journalisation pour les utilisateurs sélectionnés? Toute aide est la bienvenue.Activer la journalisation de Log4j pour certains utilisateurs
Répondre
Oui, mais. Vous pouvez faire en sorte que vos enregistreurs soient nommés avec la classe + l'utilisateur impliqué, plutôt que seulement la classe, et créer le logger sur la méthode (ou si vous voulez avoir envie, cachez les loggers dans une sorte de pool par utilisateur) , puis configurez la journalisation de manière appropriée.
Il est très compliqué et intrusif pour le code, mais comme l'utilisateur est une propriété d'exécution, je ne vois pas comment (à court d'AspectJ ou ses cousins) comment éviter ce genre de désordre.
Une autre option consiste à formater vos messages de journal et à inclure le nom d'utilisateur dans le message de journal, puis à analyser les journaux ultérieurement. Cela permettrait le débogage pour tout le monde (ce qui peut être un problème de performances, évidemment) mais si le souci est plus d'isoler une journalisation des utilisateurs plutôt que de limiter le nombre d'appels de débogage, cela peut être une solution.
Je présume que vous avez une application web ou similaire, et que plusieurs utilisateurs identifiables y accèdent simultanément?
Vous ne pouvez pas facilement modifier la configuration par utilisateur dans Log4j. Cependant, je considérerais ce qui suit (cela suppose un serveur Web ou similaire, chaque demande d'utilisateur étant sur un fil séparé):
- d'identifier l'utilisateur effectuant un appel de serveur dès qu'ils font cet appel. Stockez ces données utilisateur dans un MDC
- Implémentez un Log4J personnalisé appender. Pour chaque appel entrant, vous pouvez inspecter l'utilisateur stocké dans le MDC et ajuster la gravité/journalisation selon les besoins.
C'est un peu de travail (compte tenu des hypothèses ci-dessus), mais devrait fonctionner. Évidemment, ce n'est pas valable si les hypothèses que j'ai faites à propos de votre architecture sont incorrectes.
Ce problème est résolu dans logback (successeur de log4j) avec TurboFilters. Voir l'exemple intitulé "Configuration de MDCFilter et MarkerFilter". Si vous avez besoin d'aide, contactez la liste de diffusion de l'utilisateur de logback.
- 1. Comment désactiver la journalisation à l'aide de log4j?
- 2. Comment activer la journalisation pour un hôte générique NServiceBus?
- 3. Comment activer la journalisation dans le processus RhinoETL?
- 4. Java Applet démarre très lentement pour certains utilisateurs?
- 5. Autoriser seulement certains utilisateurs à modifier ASPxGridView
- 6. Horodatage Log4J
- 7. Comment envoyer java.util.logging à log4j?
- 8. Y at-il une bibliothèque de journalisation (par exemple log4j) dans actionscript 3
- 9. Capture d'événements pour la journalisation Objectif
- 10. Élimination de la sortie de configuration inutile de log4j
- 11. C bibliothèques de journalisation
- 12. Activer les utilisateurs sys, guest et information_schema dans SQL Server
- 13. Désactiver la journalisation tomcat
- 14. jQuery changement d'action de formulaire ne fonctionne pas pour certains utilisateurs d'IE 7
- 15. fichiers de balises et de log4j
- 16. Utilisation de la connexion log4j dans weblogic 9/10
- 17. Base de données de production séparée pour la journalisation
- 18. Impossible de définir LevelRangeFilter pour log4j
- 19. Comment ajuster les niveaux de log4j lors de l'exécution?
- 20. Journalisation d'événements personnalisée pour les frameworks Javascript
- 21. Base de données de conception: fusionner les utilisateurs de différents systèmes de journalisation (google, facebook, openid ...)
- 22. Script pour activer AJAX pour asp.net dans la configuration web
- 23. Macro de débogage du préprocesseur pour la journalisation facultative
- 24. Utilisation de log4j avec des classes héritées
- 25. Stratégie de journalisation pour l'application XBAP
- 26. Désactiver la journalisation générale de MySQL sans redémarrer?
- 27. Désactivation de la sortie Log4J en Java
- 28. Code pour activer/désactiver la connectivité Internet
- 29. Check Panel pour activer/désactiver la visibilité
- 30. fichier de propriétés log-consg et log4j
Ne créez pas d'appender personnalisé. Vous auriez un nouveau type pour chaque type d'appender. Au lieu de cela, créez un filtre unique qui peut être composé avec n'importe quel appender. – erickson
J'avais vaguement envisagé un ajout d'appender personnalisé à d'autres ensembles d'appenders. Mais les filtres ressemblent à une solution très appropriée dans ce cas. –