7
votes

Lorsque vous utilisez Wrapper, la manière de préserver le nom de la classe et de la méthode pour log4net pour vous connecter?

J'ai besoin d'un wrapper log4net - pour être exposé à un certain nombre de composants différents dans une grande application. Je veux évidemment conserver le nom de la classe et de la méthode lors de la journalisation, mais je me tiens à l'écart du type de descente, etc. à mon enveloppe.

J'ai consulté Cette question qui est très similaire à la mienne, mais ça n'a pas aidé.

Je l'ai vu fait dans cette autre question avec smt comme suit: xxx

Ce n'est pas idéal car il n'utilise pas la touche The Out-of The-Box Fonctionnalité Log4Net.

J'aimerais avoir une idée de la façon dont les gens le font avant d'aller pour la tangente et de venir avec quelque chose de très compliqué. Tous les pointeurs (liens / ressources / échantillons) appréciés!


0 commentaires

3 Réponses :


2
votes

J'ajouterais habituellement quelque chose que ça ... (c'est toutes les fonctionnalités dont j'ai besoin) xxx

Vous pouvez toujours créer un wrapper pour log4net qui prend tous les params dont vous avez besoin (comme méthodybase)? < / p>


1 commentaires

Merci - je voudrais éviter de passer du type et de la méthodeName.



4
votes

log4net vous permet d'accéder à un nom de méthode par exemple comme cette méthode%. Ce n'est pas l'opération la plus rapide, mais si vous avez besoin de déboguer quelque chose, vous pouvez très bien l'utiliser. Je crois que votre question concerne le fait que Log4Net ne produira pas le nom de méthode correct si vous utilisez une enveloppe.

Pour résoudre ce problème, vous devez regarder comment Log4net a écrit la mise en œuvre iLog . Ceci est fondamentalement une enveloppe autour de l'enregistreur Log4net interne et donc le même problème s'applique à la mise en œuvre ILog . J'ai fait fondamentalement les éléments suivants: xxx

évidemment, il y a encore certaines choses à faire, mais les points importants sont mentionnés.


3 commentaires

Bonjour, cela échoue en mode de sortie. Il sauve simplement "?" dans le nom de la classe et le nom de la méthode. Avez-vous rencontré un tel problème? Si oui, une idée?


Jamais eu ce problème. Je pouvais imaginer que le compilateur s'inlande de votre méthode?


Ouais, la documentation Log4Net suggère également la même chose à dire à l'aide de System.Diagnostics.StackTrace qui fonctionne différemment en mode de sortie :-(



3
votes

Créez votre classe wrapper comme celle-ci ... xxx

Configurez votre fichier log4net.config de la manière suivante ... xxx

Utilisez maintenant simplement ces méthodes telles que celle-ci ... xxx


1 commentaires

J'aime cette solution mais cela ne fonctionne pas avec des méthodes statiques. Aucune suggestion?