登录托管NancyFx web服务的控制台应用程序

本文关键字:控制台 应用程序 服务 web NancyFx 登录 | 更新日期: 2023-09-27 18:11:56

我在做什么
我正在写一个Nancy自托管应用程序(在控制台窗口中运行(

我的问题
我无法让log4net将任何内容记录到我的控制台窗口。(特别是-我在托管NancyFx服务时无法实现这一点,我在其他控制台应用程序中使用Log4Net没有问题。(

我研究了什么
我查看了以下页面(除了搜索StackOverflow之外(:
http://www.philhack.com/wire-up-log4net-to-nancy/https://lookonmyworks.co.uk/2012/03/14/logging-unhandled-exceptions-with-nancy/

我的log4net配置

<?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>

我使用Log4Net的示例

 public class MyNancyModule : NancyModule
 {
    private static ILog Logger = LogManager.LogFactory.GetLogger(typeof(MyNancyModule));
    public MyNancyModule()
    {
       Logger.Debug("This is a test");
    }
 }

我的问题(再次(
使用上述配置,我无法让log4net将任何内容记录到控制台窗口。我从上面的博客文章中了解到Nancy做了一些事情来配置干扰log4Net的错误处理管道,但我不太明白它在做什么或如何做。

如何让log4Net在自托管Nancy服务中工作,以便登录到控制台窗口(我对登录到内置诊断页面不是特别感兴趣(?

我没有像在所有其他应用程序中那样尝试将日志管理器添加到IOC容器中,我通常每个类都有一个静态日志管理器,它为我提供了特定于类的日志记录-博客文章中的示例将所有内容都记录为源自引导程序类。

编辑我忘了提到我正在使用ServiceStack.Loging.Log4Net作为日志管理器。在我的例子中,如果我这样做,它似乎也不起作用:

private static ILog Logger = LogManager.GetLogger(typeof(ApiReverseProxyModule));

登录托管NancyFx web服务的控制台应用程序

我使用log4net类:

首先必须定义一次XmlConfigurator:

XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile));

你可以在类中使用它:

var log = LogManager.GetLogger("ClassName");
log.Debug("What you want...");

感谢Stuartd为我指明了正确的方向。我提到的博客有点误导——事实证明我错过了

LogManager.LogFactory = new Log4NetFactory(configureLog4Net: true);

从我的主要方法-所以我总是使用一个null日志工厂。

这似乎与NancyFX无关!

希望这能帮助到别人!