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);
}
}