【发布时间】:2017-01-31 07:25:02
【问题描述】:
我正在使用NLog 在 .net 核心中记录消息。
以下是为我完成日志记录工作的方法。 它也能够记录属性。 只有当我调用此方法时,它才会写入文件。
private static void WriteLog(LogEvent logEvent)
{
var log = LogManager.GetLogger(logEvent.Logger);
LogEventInfo logMsg = new LogEventInfo();
logMsg.Message = logEvent.Message;
logMsg.Level = logEvent.LogLevel;
logMsg.Properties.Add("Title", logEvent.Title);
logMsg.Properties.Add("Name", "abc");
if (!string.IsNullOrEmpty(logEvent.StackTrace))
{
logMsg.Properties.Add("StackTrace", "Stack Trace: " + logEvent.StackTrace + Environment.NewLine);
}
if (!string.IsNullOrEmpty(logEvent.InnerException))
{
logMsg.Properties.Add("InnerException", "Inner Exception: " + logEvent.InnerException + Environment.NewLine);
}
log.Log(logMsg);
}
它没有记录如下消息:
"Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext."
"Request starting HTTP/1.1 GET http://localhost:5000/api/"
我想通过将 NLog 添加到 .net 核心来实现类似的功能。 我在 StartUp.cs 中添加了 NLog 如下:
loggerFactory.AddNLog();
但是通过上面提到的方式添加 NLog,它会记录所有与动作执行相关的消息。但我不想要这些消息。
我希望 NLog 使用 LogInformation() 来记录消息。以及如何在此处传递'StackTrace' 和'InnerException' 等属性。
_logger.LogInformation("Home controller and Index action - logged");
【问题讨论】:
标签: c# asp.net-core .net-core nlog asp.net-core-webapi