Log4net configuration de l'assemblage de l'attribut ne charge pas le fichier de configuration
J'ai le fichier suivant Log4net.config dans mon répertoire bin:
<?xml version="1.0" encoding="utf-8" ?>
<log4net xmlns="urn:log4net">
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="file" value="MyLogFile.log"/>
<param name="appendToFile" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date (%logger) [%5level] - %message" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date (%logger) [%5level] - %message" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
<appender-ref ref="ConsoleAppender"/>
</root>
<logger name="NHibernate" additivity="false">
<level value="WARN"/>
</logger>
</log4net>
Et le code suivant dans mon AssemblyInfo.cs fichier:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyTitle("My Project")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)]
Quand je lance le programme, j'ai le log4net sortie de débogage:
log4net: log4net assembly [log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821]. Loaded from [D:\Data\Projects\Active\Clients\MyProject\src\MyProject.Importer\bin\Debug\log4net.dll]. (.NET Runtime [4.0.30319.1] on Microsoft Windows NT 6.1.7600.0)
log4net: DefaultRepositorySelector: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: Creating repository for assembly [MyCompany.Framework, Version=2.1.72.0, Culture=neutral, PublicKeyToken=null]
log4net: DefaultRepositorySelector: Assembly [MyCompany.Framework, Version=2.1.72.0, Culture=neutral, PublicKeyToken=null] Loaded From [D:\Data\Projects\Active\Clients\MyProject\src\MyProject.Importer\bin\Debug\MyCompany.Framework.dll]
log4net: DefaultRepositorySelector: Assembly [MyCompany.Framework, Version=2.1.72.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified.
log4net: DefaultRepositorySelector: Assembly [MyCompany.Framework, Version=2.1.72.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy]
The thread 'vshost.RunParkingWindow' (0xd30) has exited with code 0 (0x0).
The thread '<No Name>' (0x15d0) has exited with code 0 (0x0).
log4net: Hierarchy: Shutdown called on Hierarchy [log4net-default-repository]
Log4net charge, mais ne semble pas être le traitement de mon fichier de config. Quand je commenter l'attribut dans AssemblyInfo.cs et exécutez le code suivant lors de mon initialisation du programme, il fonctionne comme prévu:
var log4netConfig = "Log4net.config";
var log4netInfo = new FileInfo(log4netConfig);
log4net.Config.XmlConfigurator.ConfigureAndWatch(log4netInfo);
Ce que je fais mal? Je veux charger de AssemblyInfo.cs.
OriginalL'auteur Chris | 2010-10-19
Vous devez vous connecter pour publier un commentaire.
J'ai aussi des problèmes avec cette méthode de bootstrap log4net. Le la documentation dit que vous avez à faire un appel très tôt dans votre démarrage de l'application
Essayez de placer un enregistreur dans la même classe que le démarrage de votre application (programme.cs, app.xaml, peu importe). Par exemple
Et pour les coups de pied, faire un appel dans le journal (même si celui-ci est filtrée, ou évalué de l'ajout de processus, elle doit forcer log4net pour évaluer votre repository/hiérarchie).
<log4net debug="true" />
Pour une application de service web, où devrait-il être?
Vérifier logging.apache.org/log4net/release/faq.html pour savoir Comment puis-je activer log4net interne de débogage? il montre comment configurer le débogage et un écouteur de trace.
Il y a aussi le moindre problème connu, qui, pour une raison que je ne peux pas comprendre, ils ont décidé que log4net est XmlConfiguratorAttribute travailler uniquement lors de l'utilisation d'une version de Débogage. Si vous projetez de faire une version release (qui vous sera très certainement à un certain point), vous devez utiliser ConfigureAndWatch approche au démarrage de l'application.
OriginalL'auteur Anthony Mastrean
enfin je viens de trouver la solution la plus simple, vous pouvez obtenir de l'aide il y
Mondiale.asax dans la fonction de démarrage
En toute de la classe où l'utilisation de la journalisation au niveau de la classe de
ajouter de l'espace de noms
ajouter cette ligne de code au niveau de la classe de
utiliser la fonction log dans toute action
configuration
il peut aider à tous et facile à utiliser. grâce
OriginalL'auteur adnan
Je ne garder
log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));
dans le monde.asax.cs à l'intérieur de la Application_Start()... Donc je n'ai pas besoin de transporter de la commande tous sur les lieux.OriginalL'auteur rkmorgan
J'ai corrigé cela en ajoutant les RepositoryAttribute de la délinquance de l'assemblée AssemblyInfo.cs fichier.
OriginalL'auteur NightShovel
Je suis en utilisant le Web.Sections de configuration pour configurer l'Enregistreur et manuellement journal des événements, le Bootstrap Enregistreur de données de global.asax
Essayer d'amorçage à partir de mondial.asax
OriginalL'auteur Rahul Jujarey
OriginalL'auteur jayson.centeno