Log4Net de l'exploitation forestière (probablement pas initialisé)
Première fois de jouer avec Log4Net et je suis en cours d'exécution dans le pétrin. J'ai suivi différents tutos mais j'ai été incapable de l'obtenir pour vous connecter quoi que ce soit. Permettez-moi de vous montrer mon code et j'espère que vous pouvez me dire ce que je fais mal.
app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="CurrentLog.txt"/>
<staticLogFileName value="true"/>
<appendToFile value="true"/>
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd"/>
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd MMM yyy HH:mm:ss} %level %message. %newline %exception" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
</configuration>
AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
Présentateur.cs
Au sommet de la classe, j'ai ceci:
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Alors j'essaie d'utiliser le journal de variable plus tard dans la classe:
bool isDebugEnabled = log.IsDebugEnabled;
log.Debug("Failed to save", e);
Chaque fois que je passe en revue les isDebugEnabled
variable, il est faux de prétendre, comme le sont tous les autres isBlahEnabled
si je inspecter le journal variable.
Mon soupçon est que je n'ai pas accroché mon application.fichier de configuration correctement parce que c'est la première fois que j'ai essayé d'en utiliser un. J'ai créé par un clic droit sur le projet dans l'explorateur de solutions, l'ajout d'un nouvel élément, en choisissant Fichier de Configuration d'Application et de le nommer app.config.
Il n'. Voir ma réponse à @Valdes réponse, j'ai maintenant la journalisation de travail sans modifier les autorisations, etc.
OriginalL'auteur Stu | 2011-08-20
Vous devez vous connecter pour publier un commentaire.
Celui-ci fonctionne pour moi:
app.config
Assurez-vous également de l'action de construire sur
app.config
est fixé à Aucun et Copie de sortie dir est défini à "Copier si plus récent". Vous pouvez définir ces paramètres dans les propriétés du fichier.Programme.cs
Je ne suis pas familier avec le assemblyinfo méthode. Où dans la documentation est celle-ci? Je suppose qu'il fait quelque chose de légèrement différent de ce que fait la configuration.
Ces deux tutoriels d'utilisation de la AssemblyInfo.cs méthode: codeproject.com/KB/dotnet/Log4net_Tutorial.aspx et mitch-wheat.blogspot.com/2007/04/log4net-net-logging-tool.html mais pas la peine maintenant que cela fonctionne! Merci beaucoup!
OriginalL'auteur Waldo Bronchart
Juste pour ajouter mon 2 cents: j'ai eu le même Problème, mais j'utilise la config ci-dessus en séparer
log4net.config
(j'ai donc sur toutes les applications la même config), mais j'ai tout simplement oublié de définir le fichier de propriété sur la compilation "Copier lors de la plus récente" (ou une formulation similaire, ont Version allemande).OriginalL'auteur Rolfi
Juste pour ajouter mon 2p dans le cas où cette aide à quelqu'un d'autre à la recherche d'une résolution à ce problème:
Dans mon cas, j'ai été en utilisant le NServicebus.La journalisation paquet en plus de Log4net, et ce paquet contient les types avec exactement les mêmes noms que ceux de Log4net, différant seulement dans l'espace de noms.
La fixation de la 'l'aide de déclarations ou entièrement de qualifier le type de noms résolus, mais il était très difficile de repérer le problème.
OriginalL'auteur Will Westrop