2010-03-15 6 views
11

Sur mon application asp Webforms, je ferais l'initialisation de log4net;Comment configurer log4net pour WCF

log4net.Config.XmlConfigurator.Configure(); 

sur global.asax sur Application_Start afin que cela soit fait une fois au démarrage de l'application. Quelle est la bonne façon de configurer log4net pour les applications WCF hébergées par IIS (en demandant spécifiquement où placer cette ligne quel événement utiliser, etc.) pour que log4net soit initialisé une fois et qu'il n'y ait pas d'initialisations inutiles.

Répondre

3

Même chose: Application_Start. Après tout, c'est une application ASP.NET. Pour les services d'auto-hébergement, vous pouvez configurer log4net juste avant de démarrer l'hôte.

+1

J'ai ajouté un fichier global.asax et activé ASPNetCompatibility via les attributs webconfig et service. Je reçois actuellement un hit sur Application_BeginRequest et Session_Start mais Application_Start ne se fait jamais toucher. Une idée de comment cela a-t-il pu arriver? Je tue tout w3wp avant de déboguer pour m'assurer que l'application démarre pour la première fois. – kaivalya

15

que je fais habituellement ce dans le constructeur de ma classe de service, mais je vérifie si log4net est déjà configuré:

if (!LogManager.GetRepository().Configured) 
{ 
    // configure log4net... 
} 

Je pense que si vous voulez vraiment éviter cela, vous devez écrire votre propre usine de service et exécutez la configuration là.

1

Ajout:

XmlConfigurator.Configure(); 

au constructeur de chacune des classes de service fait l'affaire pour moi.

+3

Pour améliorer la qualité de votre message, veuillez indiquer comment/pourquoi ce code résoudra le problème. –

Questions connexes