Nlog 3.1 与温莎城堡不记录
本文关键字:城堡 记录 Nlog | 更新日期: 2023-09-27 18:34:45
我正在尝试将 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" />
-
添加了温莎安装程序
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.");
但是我没有看到创建的文件。
缺少任何步骤?
提前谢谢。吉列尔莫。
您需要将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
,因为该类不是由温莎管理/创建的,因此它没有注入您的Logger
属性。但是因为控制器是由温莎创建的,并且ILogger
其中存在不可分割性: 温莎教程 - 第五部分 - 添加日志记录支持