2010-02-27 6 views
3

La version officiellement publiée de Ninject 2 n'inclut plus de référence à la fonctionnalité spécifique à WebForms pour IoC pour WebForms, MasterPages, etc. Elle est désormais séparée en plugins/extensions; qui dans ce cas est l'extension http://github.com/idavis/ninject.web. Mon problème est cependant qu'il y a une dépendance sur log4net (ou NLog) et je ne trouve pas de documentation sur la façon de le configurer pour l'intégrer à ma configuration log4net actuelle, ou le supprimer complètement (c.-à-d. Il est concevable que deux configurations log4net soient en cours d'exécution).Ninject 2, journalisation et WebForms

http://markmail.org/message/7iv7nltanz6ve4ga#query:Error%20activating%20ILoggerFactory%20ninject.web+page:1+mid:6o4q6ee2js2k4gfp+state:results référence d'autres avec le même problème, mais encore une fois, pas de véritable documentation sur ce qu'il faut faire avec. J'ai regardé à travers la source pour tout cela, et il me manque quelque chose d'évident.

Quelqu'un peut-il me diriger dans la bonne direction pour la meilleure façon de traiter cela afin que je puisse toujours facilement intégrer Ninject avec WebForms, mais ne pas avoir des services de journalisation étrangers en cours d'exécution? Ou vous inquiétez pas de quelque chose comme ce qui suit sur le Global.asax:

protected override IKernel CreateKernel() 
    { 
     IKernel kernel = 
     new StandardKernel(new SomeMyModule(), new Log4netModule()); 
     return kernel; 
    } 

Je suis actuellement kickstarts ma configuration log4net dans global.asax via

private readonly static ILog Log = LogManager.GetLogger(typeof(Global));: 
+0

On dirait que ninject a besoin d'un NullLogger? Avez-vous essayé * pas * d'ajouter un module de journalisation? –

+0

Juste un petit point, vous mentionnez 'kickstarting' log4net - vous savez que cette ligne dit juste "get moi un pour moi" par opposition à "Nous allons utiliser la journalisation ici" (vous avez fait doo - je voulais juste pour être sûr) http://stackoverflow.com/questions/1261158/log4net-initialisation –

+0

Mauricio - oui, il en résulte une exception "no ILogger specified". Ce qui est logique car il n'y a pas de NullLogger pour Ninject. Ruben - oui, je sais. log4net exige que LogManager.GetLogger soit a) appelé dans le même assemblage que celui où se trouve la configuration de log4net (ce qui exclut un autre assemblage auquel appartient mon module d'erreur) et b) dès que possible. L'appeler là où je le fais d'une telle manière remplit les deux. – Ted

Répondre

3

Alors que Ninject.Web a des propriétés ILogger, il ne consigne rien.

Si vous voulez désactiver complètement Ninject.Extensions.Logging, créez et liez une implémentation de ILoggerFactory qui renvoie null de toutes les méthodes.

Ou si vous souhaitez l'activer avec log4net, extraire Ninject.Extensions.Logging de ninject.org et référence Ninject.Extensions.Logging.Log4net de votre projet. Il sera automatiquement chargé par Ninject 2.0.

Si vous construisez Ninject.Web de la source, vous pouvez supprimer l'extension de l'exploitation forestière par:

  • laisser tomber la référence à cette assemblée
  • supprimer le membre ILogger des 5 classes qui l'ont
+0

"Il sera automatiquement chargé par Ninject 2.0" sont les mots magiques en ce qu'il utilise ma configuration log4net déjà existante. – Ted