[英]How to log specific data and properties in nlog in .net core
我正在使用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'
類'StackTrace'
屬性。
_logger.LogInformation("Home controller and Index action - logged");
要限制自動記錄的內容,您可能需要查看在nlog.config和Startup.cs中設置的記錄級別 。 例如,這將僅自動記錄“信息”或更高級別(警告,錯誤和致命)的消息,而不記錄“跟蹤”或“調試”消息。 它還將僅記錄名稱空間“ MyNamespace”中有關類的消息。
<rules>
<!-- Level can be: Trace, Debug, Info, Warn, Error, Fatal -->
<logger name="MyNamespace.*" minlevel="Info" writeTo="DBLogger" final="true" />
</rules>
若要保存Exception和堆棧跟蹤,應改為使用_logger.Log()
方法:
try { ... }
catch(Exception ex) {
_logger.Log(LogLevel.Error, "Message", ex);
}
stacktrace將可用於記錄異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.