2009-12-24 5 views
3

L'enrubannage de log4net permet-il de réduire le couplage d'un anti-échantillon? Ou l'injection de l'instance de logger dans une propriété publique un anti-modèle? Comment approchez-vous la dépendance de log4net?Enveloppe log4net pour réduire le couplage d'un anti-échantillon?

+0

Pouvez-vous expliquer ce que vous voulez dire par couche transversale? – ewall

+0

par transversal je voulais dire que cette couche sera disponible pour toutes les autres couches, comme une couche de sécurité –

Répondre

0

Le service locator est considered et anti-pattern par beaucoup sur le bord d'attaque de la communauté .NET. Je dirais que la journalisation est généralement une caractéristique très bénigne de nos applications. C'est essentiellement "en écriture seule". Nous ne prenons jamais de décisions basées sur des requêtes du système de journalisation.

log4net est un système qui est facile à éteindre, ne jette pas des exceptions, échoue en silence, peut mettre à jour sa configuration à la volée ... il n'y a presque aucune raison d'échanger les mises en œuvre une fois que son dans.

Donc, je dis que, dans le code de l'application, il est correct de l'utiliser directement.

0

Nous définissons une interface de journalisation, et avons une implémentation log4net, une implémentation unitTest et une implémentation nulle.

Nous utilisons l'injection de dépendances pour transmettre une implémentation loggingInterface. L'implémentation de test unitaire a des méthodes supplémentaires, comme 'bool ErrorWasLogged()', de sorte que dans nos tests unitaires, nous pouvons affirmer que des informations importantes sont enregistrées. Pour les tests où nous ne sommes pas intéressés par le test de ce qui a été journalisé, nous utilisons l'implémentation nulle.

1

Enrouler un enregistreur pour des raisons ci-dessous -

  1. Il isole le seul changement à l'enregistreur, à l'avenir si vous voulez changer quelque chose de mieux les changements ne montés en cascade.
  2. Cela vous simplifie la vie lorsque vous voulez écrire les cas de test. Vous pouvez facilement vous moquer des choses nécessaires.
  3. Si, pour certaines raisons, vous devez disposer de plusieurs enregistreurs dans votre application, l'encapsuleur est utile. Vous pouvez changer l'enregistreur à travers une usine/registre. Ex: si un code est partagé entre différentes plates-formes/environnements où vous souhaitez avoir un enregistreur différent. Vous pouvez le faire en usine/registre.

Donc, ma vue est bonne pour l'envelopper.