如何使用nlog和asp.net core rc2获取可用的$ {callsite}

时间:2016-06-20 20:09:58

标签: asp.net-core-mvc nlog

我正在使用带有asp.net核心rc2的NLog。 (“NLog.Extensions.Logging”:“1.0.0-rc2-final-2016-05-21”)我在布局中使用$ {callsite}标记获取日志记录事件的位置时遇到了困难。我更喜欢在消息中输入它,因为我想将它呈现给自己的数据库列。

我的创业公司看起来像这样:

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddNLog();
        env.ConfigureNLog("NLog.config");

我的NLog配置:

<target xsi:type="File" name="infolog" fileName="${basedir}/logs/info-${shortdate}.log"
        layout="${longdate}|${level}|${callsite:className=true:methodName=true}|${machinename}|${message}" />

这样叫:

Logger.LogInformation("Information: User > Get");

唉,输出总是:

2016-06-20 16:00:03.4458|Info|Microsoft.Extensions.Logging.Logger.Log ...

是否有办法使用Microsoft日志记录扩展和NLog来获取写入日志的类/方法名称?

2 个答案:

答案 0 :(得分:1)

我刚使用Owin + NLog遇到了这个问题,我发现你需要告诉NLog“忽略”那些日志包装,这可以通过使用 LogManager.AddHiddenAssembly ,在我的情况下,我只需要将它添加到我的Startup类中:

LogManager.AddHiddenAssembly(typeof(NLogFactory).Assembly);
LogManager.AddHiddenAssembly(typeof(LoggerExtensions).Assembly);

在你的情况下,我认为它应该是:

LogManager.AddHiddenAssembly(typeof(Microsoft.Extensions.Logging.Logger.Log).Assembly);

我没有测试过它,但它可以指向正确的方向。

希望它有所帮助。

答案 1 :(得分:0)

我有一个解决方案。 将包更新为最新的1.0.0-rtm-alpha3

检查依赖项。如果你看到4.3.4,你需要调整它。 enter image description here

  1. 找到包.nuspec文件。
  2. enter image description here

    1. 在记事本中打开文件。
    2. 编辑文件,并将NLog版本更改为4.3.5 enter image description here

    3. 恢复包裹。这将更新项目中的依赖项。它应该按预期工作。