Comment utiliser log4net avec l'Injection de Dépendance

Je suis à essayer de comprendre quelle est la bonne formulation et l'utilisation de log4net est avec une injection de dépendance cadre.

Log4Net utilise la ILog interface mais m'oblige à appeler

LogManager.GetLogger(Reflection.MethodBase.GetCurrentMethod().DeclaringType)

dans chaque classe ou d'une méthode où j'ai besoin d'un journal d'informations. Cela semble aller à l'encontre du Cio principes et les couples de moi à l'aide de Log4Net.

Dois-je en quelque sorte mis dans une autre couche d'abstraction quelque part?

Aussi, j'ai besoin de vous connecter propriétés personnalisées comme le nom d'utilisateur comme ceci:

log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName;

Comment puis-je saisir cette sorte que je n'ai pas à vous rappeler de le faire à chaque fois et toujours conserver la méthode actuelle qui est de l'exploitation forestière. dois-je faire quelque chose comme cela ou suis-je totalement à côté de la plaque?

public static class Logger
{
    public static void LogException(Type declaringType, string message, Exception ex)
    {
        log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName;
        ILog log = LogManager.GetLogger(declaringType);
        log.Error(message, ex);
    }
}
  • La question la plus intéressante est qui DI conteneur utilisez-vous?
InformationsquelleAutor Micah | 2009-06-02