我正在使用带有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来获取写入日志的类/方法名称?
答案 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)