登录托管 NancyFx Web 服务的控制台应用程序
Logging in a console application which hosts a NancyFx web service
我在做什么
我正在编写 Nancy 自托管应用程序(在控制台中运行 window)
我的问题
我无法让 log4net 将任何内容记录到我的控制台 window。 (特别是 - 在托管 NancyFx 服务时我无法让它工作,我在其他控制台应用程序中使用 Log4Net 没有问题。)
我研究了什么
我查看了以下页面(除了搜索 Whosebug):
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 将任何内容记录到我的控制台 window。我从上面的博客 posts 了解到 Nancy 做了一些事情来配置干扰 log4Net 的错误处理管道,但我不太明白它在做什么或如何做。
如何让 log4Net 在自托管的 Nancy 服务中工作,以便登录到控制台 window(我对登录到内置诊断页面不是特别感兴趣)?
我没有像在所有其他应用程序中那样尝试将日志管理器添加到 IOC 容器中,我通常每个 class 都有一个静态日志管理器,它给我 class 特定的日志记录 -博客 post 中的示例将记录所有源自引导程序 class 的内容。
编辑
我忘了提及我正在使用 ServiceStack.Logging.Log4Net 作为 logManager。如果我这样做,它在我的示例中似乎也不起作用:
private static ILog Logger = LogManager.GetLogger(typeof(ApiReverseProxyModule));
我像这样使用 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);
来自我的主要方法 - 所以我一直使用空日志记录工厂。
这似乎与 NancyFX 无关!
希望这对某人有所帮助!
我在做什么
我正在编写 Nancy 自托管应用程序(在控制台中运行 window)
我的问题
我无法让 log4net 将任何内容记录到我的控制台 window。 (特别是 - 在托管 NancyFx 服务时我无法让它工作,我在其他控制台应用程序中使用 Log4Net 没有问题。)
我研究了什么
我查看了以下页面(除了搜索 Whosebug):
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 将任何内容记录到我的控制台 window。我从上面的博客 posts 了解到 Nancy 做了一些事情来配置干扰 log4Net 的错误处理管道,但我不太明白它在做什么或如何做。
如何让 log4Net 在自托管的 Nancy 服务中工作,以便登录到控制台 window(我对登录到内置诊断页面不是特别感兴趣)?
我没有像在所有其他应用程序中那样尝试将日志管理器添加到 IOC 容器中,我通常每个 class 都有一个静态日志管理器,它给我 class 特定的日志记录 -博客 post 中的示例将记录所有源自引导程序 class 的内容。
编辑 我忘了提及我正在使用 ServiceStack.Logging.Log4Net 作为 logManager。如果我这样做,它在我的示例中似乎也不起作用:
private static ILog Logger = LogManager.GetLogger(typeof(ApiReverseProxyModule));
我像这样使用 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);
来自我的主要方法 - 所以我一直使用空日志记录工厂。
这似乎与 NancyFX 无关!
希望这对某人有所帮助!