【发布时间】:2014-12-20 19:31:58
【问题描述】:
我正在尝试将 NLog (3.1) 与温莎城堡设施一起使用,但它对我不起作用(没有错误,没有任何反应)
这些是我到目前为止的步骤:
- 从 Nuget 下载:Castle Windsor NLog 集成
- 从 Nuget 下载:NLog 配置
-
像这样更新 nlog 配置:
<target xsi:type="File" name="f" fileName="d:\nlog.log" layout="${longdate}|${level:uppercase=true}|${logger}|${message}" /><logger name="*" minlevel="Trace" writeTo="f" /> -
添加了 Windsor 安装程序
public class LoggingInstaller : IWindsorInstaller { public void Install(IWindsorContainer container, IConfigurationStore store) { container.AddFacility<LoggingFacility>(f => f.LogUsing(LoggerImplementation.NLog).WithConfig("NLog.config")); } }我叫它(我已经检查过那里的断点被击中。
-
像这样添加记录器类:
namespace WebApi.App_Start { public class MyLogger { private ILogger logger = NullLogger.Instance; public ILogger Logger { get { return logger; } set { logger = value; } } } } -
在这样的控制器中使用它:
new MyLogger().Logger.Info("New Request Created.");
但我没有看到创建的文件。
缺少任何步骤?
提前致谢。吉列尔莫。
【问题讨论】:
-
如果你使用
new MyLogger(),那么Windsor 不会知道它并且不会注入Logger。所以需要在你想要使用记录器的控制器类中包含所有private ILogger logger = NullLogger.Instance;等代码...... -
@nemesv。问题是在 App_Code 类中有第 5 步,而不是在控制器中。请用它创建一个答案,这样我就可以选择它是正确的。顺便说一句,你知道为什么它在 App_Code 类中不起作用吗?谢谢!
标签: c# castle-windsor nlog