Ce que je fais
Je suis en train d'écrire une application d'hébergement auto Nancy (fonctionne dans une fenêtre de la console)Connexion à une application console qui héberge un service Web NancyFx
Mon problème
Je ne peux pas log4net pour enregistrer n'importe quoi dans ma fenêtre de console. (Plus précisément - Je ne peux pas obtenir ce travail lors de l'hébergement d'un service de NancyFx, je n'ai aucun problème à l'aide Log4Net dans d'autres applications de la console.)
Ce que j'ai fait des recherches
J'ai regardé les pages suivantes (en plus StackOverflow recherche):
http://www.philhack.com/wire-up-log4net-to-nancy/ https://lookonmyworks.co.uk/2012/03/14/logging-unhandled-exceptions-with-nancy/
Mon log4net Configuration
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level: %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="Console"/>
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
Exemple de mon utilisation de Log4Net
public class MyNancyModule : NancyModule
{
private static ILog Logger = LogManager.LogFactory.GetLogger(typeof(MyNancyModule));
public MyNancyModule()
{
Logger.Debug("This is a test");
}
}
Mon problème (encore une fois)
Je ne peux pas log4net de se connecter quoi que ce soit à la fenêtre de ma console en utilisant la configuration ci-dessus. Je comprends à partir des articles de blog ci-dessus que Nancy fait quelque chose pour configurer les pipelines de gestion des erreurs qui interfèrent avec log4Net, mais je ne comprends pas très bien ce qu'il fait ou comment. Comment puis-je faire fonctionner log4Net dans un service Nancy auto-hébergé afin de me connecter à la fenêtre de la console (je ne suis pas particulièrement intéressé par la connexion à la page de diagnostic intégré)?
Je n'ai pas essayé d'ajouter le gestionnaire de journal au conteneur IOC comme dans toutes mes autres applications, j'ai généralement un gestionnaire de journaux statique par classe qui me donne une journalisation spécifique à la classe ayant pour origine la classe bootstrapper.
Modifier j'oublié de mentionner que j'utilise ServiceStack.Logging.Log4Net pour le logmanager. Il a également ne semble pas travailler dans mon exemple, si je fais:
private static ILog Logger = LogManager.GetLogger(typeof(ApiReverseProxyModule));
Où/quand chargez-vous la configuration de log4net? – stuartd
@stuartd Votre question était pertinente - J'ai oublié d'ajouter la ligne 'LogManager.LogFactory = new Log4NetFactory (configureLog4Net: true);' à ma méthode principale. Si vous voulez le représentant, ajoutez ceci comme réponse et je le marquerai comme tel. Merci! – Jay
Semble un peu mince pour une réponse mais merci :) – stuartd