Nous avons une classe « log » qui utilise Relection.MethodBase pour envoyer l'information de classe actuelle dans le journal.Utilisation de la classe StackTrace dans un environnement de production pour obtenir les informations d'appeler la méthode
La réflexion.MethodBase se produit dans la classe elle-même.
Cependant, je voudrais passer ce genre de choses à une seule classe de type singleton « log » externe.
Dans ce scénario, la classe journal externe doit obtenir l'information APPELER, pas l'information actuelle de la méthode. J'utilise stacktrace pour ce faire, qui n'est pas dans l'espace de noms Reflection.
Puis-je garantir que des informations spécifiques « que » (méthode d'appel) sera là dans un environnement de production?
var stackTrace = new StackTrace();
return LogManager.GetLogger(stackTrace.GetFrame(1).GetMethod().DeclaringType);
cheers!
convenu. Une meilleure recommandation? Idéalement, je ne voudrais pas mettre des choses de réflexion dans d'autres classes, j'aimerais que l'enregistreur les gère en interne ... des idées? – andy
En écrivant que je viens d'éditer ma réponse pour pointer vers une méthode que j'ai utilisée. – Josh