【问题标题】:Nlog 3.1 with Castle Windsor not loggingNlog 3.1 与 Castle Windsor 不记录
【发布时间】:2014-12-20 19:31:58
【问题描述】:

我正在尝试将 NLog (3.1) 与温莎城堡设施一起使用,但它对我不起作用(没有错误,没有任何反应)

这些是我到目前为止的步骤:

  1. 从 Nuget 下载:Castle Windsor NLog 集成
  2. 从 Nuget 下载:NLog 配置
  3. 像这样更新 nlog 配置:

    <target xsi:type="File" name="f" fileName="d:\nlog.log"
            layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />
    

    <logger name="*" minlevel="Trace" writeTo="f" />
    

  4. 添加了 Windsor 安装程序

     public class LoggingInstaller : IWindsorInstaller
     {
            public void Install(IWindsorContainer container, IConfigurationStore store)
            {
                container.AddFacility<LoggingFacility>(f => f.LogUsing(LoggerImplementation.NLog).WithConfig("NLog.config"));
            }
    }
    

    我叫它(我已经检查过那里的断点被击中。

  5. 像这样添加记录器类:

    namespace WebApi.App_Start
    {
        public class MyLogger
        {
            private ILogger logger = NullLogger.Instance;
    
            public ILogger Logger
            {
                get { return logger; }
                 set { logger = value; }
            }
        }
    }
    
  6. 在这样的控制器中使用它:

    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


【解决方案1】:

您需要将Logger 属性放在您想要记录某些内容的每个类中,并且该类的实例必须由 Windsor 创建/管理。

所以你需要将它添加到你的控制器中:

public class MyController : Controller
{
    private ILogger logger = NullLogger.Instance;

    public ILogger Logger
    {
        get { return logger; }
        set { logger = value; }
    }

    public ActionResult MyAction() 
    {
         Logger.Info("New Request Created.");
    }
}

它不适用于 MyLogger,因为该类不是由 Windsor 管理/创建的,因此它没有注入您的 Logger 属性。但是因为控制器实例是由 Windsor 创建的,ILoggerinejtion 在其中工作:Windsor Tutorial - Part Five - Adding logging support

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多