c# - 配置 NLog 的布局以显示所有事件上下文条目

标签 c# nlog

我目前正在开发一个 webapi2 应用程序,并且正处于使用 NLog 管理我的日志的阶段。

在我的应用程序中,我以这种方式使用 LogEventInfo.Properties 字典以键值对方式登录:

thisController.LogParams.Add("ControllerName",controllerName);
thisController.LogParams.Add("ActionName", actionName);
thisController.LogParams.Add("TotalTime", actionWatch.ElapsedMilliseconds);
LogEventInfo logEvent = new LogEventInfo() 
       { 
           Message = string.IsNullOrEmpty(thisController.LogMessage)? "Finished Successfuly":thisController.LogMessage,
           Level = LogLevel.Info,
           TimeStamp = DateTime.Now
       };
logEvent.Properties.Merge(thisController.LogParams);
logger.Log(logEvent);

一切正常,但我似乎无法找到呈现布局的方法,因此它会打印 LogEventInfo.Properties 字典中的所有键值条目。

让我们假设我的目标是一个文件,然后我必须明确提到键名, 有没有办法让它显示字典的所有内容? 这就是我今天的做法,在这里我只能记录我知道的条目:

<target name="f1" 
  xsi:type="File" 
  fileName="${basedir}\logs\log.txt" 
  maxArchiveFiles="60" 
  archiveNumbering="Date" 
  archiveDateFormat="yyyyMMdd" 
  archiveEvery="Day" 
  layout="${longdate} : ${callsite:className=true:methodName=true} : ${event-context:item=ControllerName} : ${event-context:item=ActionName} : ${event-context:item=TotalTime} : ${message}" />

最佳答案

NLog 中有一个内置的布局渲染器可用于此目的 - ${all-event-properties}。默认情况下,它以键值样式发出所有事件上下文属性,以逗号分隔。

查看文档了解更多详情 https://github.com/NLog/NLog/wiki/All-Event-Properties-Layout-Renderer

关于c# - 配置 NLog 的布局以显示所有事件上下文条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28660020/

相关文章:

c# - 使用 iTextSharp 提取 FlateDecode 图像

c# - 如何按只能在排序过程中获得的值对列表进行排序?

c# - 将 ASP.NET Core 日志异步重定向到特定的 NLog 文件

c# - 将 VB6 类型转换为 C# 结构

c# - 默认方法是 "virtual"还是 "not virtual"? :

c# - 在 C# 中同步共享资源集合

c# - 使用NLog时执行错误

asp.net - NLog 彩色控制台

c# - 在 Azure Functions 中使用 NLog

c# - NLog 在日志文件中包含 EventId