L'enregistrement à l'aide Château.Des installations.Journalisation et de log4net
Je vais essayer d'obtenir log4net intégration pour le Château de Windsor de travail. J'ai écrit ma classe avec une propriété publique de type ILogger
et a pris la configuration de mon application.config comme suit.
<configuration>
<configsections>
<section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configsections>
<castle>
<facilities>
<facility id="logging" type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging" loggingApi="log4net" />
</facilities>
<components>
<component id="form1" type="WinFormsActiveRecordSample.Form1, WinFormsActiveRecordSample" />
</components>
</castle>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="main.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd.MM.yy HH:mm:ss} %-5level %logger - %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
À mes yeux, cela devrait fonctionner, mais il ne le fait pas. Lorsque j'ai mis loggingApi="console"
il se connecte correctement. Quand j'ai changer de log4net il ne fait rien. Le log4net de configuration a été prise à partir d'un autre projet où le bloc est de travail. Que dois-je faire que le fichier journal est-il utilisé? Doit-il y avoir un spécial log4net de configuration?
Merci pour tout conseil
Boris
fait-il enfin travailler?
Après un peu de changement dans mon code, oui, c'est fait 🙂
Après un peu de changement dans mon code, oui, c'est fait 🙂
OriginalL'auteur Booser | 2010-02-19
Vous devez vous connecter pour publier un commentaire.
Déplacer votre log4net la configuration dans un fichier séparé log4net.config, puis de renvoyer ce fichier à partir de la facilité de configuration:
Si vous voulez avoir votre log4net de configuration dans une section de votre application.config:
puis de l'enregistrer comme du centre:
curieux, doit
configfile="..."
pas être l'application de config? @Boris ce qui se passe si vous spécifiez[application.name].exe.config
à la place?ne fonctionne pas
voir mise à jour de réponse
Trouvé la solution dans l'usine de la classe. J'ai changé d'hériter de Log4netFactory et changé le retour de la méthode Create utiliser return new Log4netLogger(log.Enregistreur, this); Maintenant, il fonctionne comme un charme.
OriginalL'auteur Mauricio Scheffer
Vous pouvez utiliser l'App.config pour votre log4net configuration sans créer de journalisation personnalisé de l'usine. Simplement fournir de l'Application.fichier de config comme un argument de la
LoggingFacility
constructeur:Contrairement à Mauricio Scheffer réponse, la valeur par défaut d'usine ne
ConfigureAndWatch
. Cela fonctionne bien pour moi avec l'Application.fichier de config, mais je ne suis pas en cours d'exécution sur IIS ou quoi que ce soit d'autre qui limite les autorisations.Je suis en train de faire cela dans le code parce que vous ne pouvez pas utiliser fiable de l'autoroute de Windsor de configuration Xml pour charger log4net de configuration à partir de l'App.config. C'est parce que l'emplacement de l'Application.config peuvent être modifiés lors de la création d'un nouveau
AppDomain
.À l'aide de ma solution signifie que le fichier journal de configuration seront compilées dans votre code. Mais vous pouvez réduire ce en utilisant un Windsor Installateur de configurer la journalisation, et de spécifier le programme d'installation (ou le programme d'installation de l'assemblée) à partir de l'App.fichier de configuration:
...
Si dans le futur (peut-être que dans votre cas de test), vous devez charger la configuration de connexion à partir d'un autre fichier, et ne pouvez pas ou ne voulez pas recompiler, il suffit de modifier le fichier Xml pour point de Windsor Installateurs dans une autre assemblée:
OriginalL'auteur Merlyn Morgan-Graham
Notez que vous pouvez utiliser les éléments suivants au cours des dernières Château versions:
Cela utiliser Log4net pour l'enregistrement et la recherche de la log4net section de configuration dans le fichier de configuration d'application.
OriginalL'auteur cguedel
C'est l'ensemble de la configuration pour l'exemple donné ici Accueil » micro-noyau/Windsor » prise en main » Partie 1 - Les bases
L'erreur que j'ai fait était (comme vous pouvez le voir les sections commenté dans le fichier de config), a essayé d'attribuer à l'Enregistreur de données de la propriété une fois de plus dans ma classe, par l'inscription de la composante dans le château. ce n'est pas nécessaire que le Château le fait automatiquement pour vous.
Cheers
Badal
OriginalL'auteur
À la suite des récentes Château de conventions (corrigez-moi si mal), j'ai résolu de cette façon:
J'ai simplement adapté la méthode indiquée ici: http://docs.castleproject.org/Windsor.Windsor-Tutorial-Part-Five-Adding-logging-support.ashx
et utilisé la surcharge de UseLog4Net() qui accepte un paramètre du fichier de configuration.
OriginalL'auteur peterrus
J'ai été absent de la suite de package NuGet.
Château.Windsor-log4net
Fixe.
OriginalL'auteur CountZero