NLog 配置文件中,布局渲染器(layout renderers)是一种机制,用于在日志消息中插入动态内容或格式化信息。它们允许您将变量、属性、日期时间信息等添加到日志消息中,以便更详细地记录和分析日志。布局渲染器是在${}中包含的占位符,会在运行时替换为实际值。

1、所有的布局参数

变量名

描述

${cached}

将缓存应用于另一个布局输出。

${db-null}

为数据库呈现 DbNull。

${exception}

通过调用记录器方法之一提供的异常信息。

${level}

日志级别(例如错误、调试)或级别序号(数字)。

${literal}

字符串 literal。(文本) - 用于转义括号。

${logger}

记录器名称。GetLogger,GetCurrentClassLogger 等。

${message}

(格式化的)日志消息。

${newline}

换行符文字。

${object-path}

呈现对象的(嵌套)属性。

${onexception}

仅在为日志消息定义了异常时才输出内部布局。

${onhasproperties}

仅当事件属性包含在日志事件中时才输出内部布局。

${var}

渲染变量

2、调用站点和堆栈跟踪

变量名

描述

${callsite}

调用站点(类名、方法名和源信息)。

${callsite-filename}

调用站点源文件名。

${callsite-linenumber}

调用站点源行编号。

${stacktrace}

呈现堆栈跟踪。

3、条件

变量名

描述

${when}

仅在满足指定条件时输出内部布局。

${whenempty}

当内部布局生成空结果时输出备用布局。

4、上下文信息

变量名

描述

${activity}

从 System.Diagnostics.Activity.Current NLog.DiagnosticSource External 捕获跟踪上下文。

${activityid}

将 System.Diagnostics 跟踪关联 ID 放入日志中。

${all-event-properties}

记录所有事件上下文数据。

${event-context}

记录事件属性数据 - 替换为 ${事件属性}。

${event-properties}

记录事件属性数据 - 重命名 ${事件-上下文}。

${gdc}

全局诊断上下文项。用于保存每个应用程序实例值的字典结构。

${install-context}

安装参数(传递给 InstallNLogConfig)。

${mdc}

映射的诊断上下文 - 线程本地结构。

${mdlc}

异步映射诊断上下文 - 作用域内上下文的线程本地结构。MDC 的异步版本。

${ndc}

嵌套诊断上下文 - 线程本地结构。

${ndlc}

异步嵌套诊断上下文 - 线程本地结构。

5、计数器

变量名

描述

${counter}

计数器值(在每次布局呈现时增加)。

${guid}

全局唯一标识符(GUID)。

${sequenceid}

日志序列 ID。

6、日期和时间

变量名

描述

${date}

当前日期和时间。

${longdate}

日期和时间采用长而可排序的格式"yyyy-MM-dd HH:mm:ss.ffff"。

${qpc}

高精度计时器,基于从 QueryPerformanceCounter 返回的值。

${shortdate}

可排序格式为 yyyy-MM-dd 的短日期。

${ticks}

当前日期和时间的分笔报价值。

${time}

24 小时可排序格式的时间 HH:mm:ss.mmm。

7、编码和字符串转换

变量名

描述

${json-encode}

使用 JSON 规则转义另一个布局的输出。

${left}

文本的剩余部分。

${lowercase}

将另一个布局输出的结果转换为小写。

${norawvalue}

防止将另一个布局呈现器的输出视为原始值。

${pad}

将填充应用于另一个布局输出。

${replace}

将另一个布局输出中的字符串替换为另一个字符串。使用正则表达式可选。

${replace-newlines}

将换行符替换为另一个字符串。

${right}

文本的右侧部分。

${rot13}

使用 ROT-13 解码"加密"的文本。

${substring}

文本的子字符串。

${trim-whitespace}

从另一个布局呈现器的结果中修剪空格。

${uppercase}

将另一个布局输出的结果转换为大写。

${url-encode}

对另一个布局输出的结果进行编码,以便与 URL 一起使用。

${wrapline}

以指定的行长度换行另一个布局输出的结果。

${xml-encode}

将另一个布局输出的结果转换为符合 XML 标准。

8、环境和配置文件

变量名

描述

${appsetting}

来自 .config 文件 NLog.Extended 的应用程序配置设置。

${configsetting}

来自 appsettings.json 的值或

ASP.NET Core & .NET Core

${environment}

环境变量(例如 PATH、OSVersion)。

${environment-user}

用户标识信息(用户名)。

${registry}

来自 Windows 注册表的值。

9、文件和目录

变量名

描述

${basedir}

当前应用程序域的基目录。

${currentdir}

应用程序的当前工作目录。

${dir-separator}

操作系统相关的目录分隔符。

${file-contents}

呈现指定文件的内容。

${filesystem-normalize}

通过将文件名中不允许使用的字符替换为安全字符来筛选它们。

${nlogdir}

NLog.dll所在的目录。

${processdir}

应用程序的可执行进程目录。

${specialfolder}

系统特殊文件夹路径(包括"我的文档"、"我的音乐"、"程序文件"、"桌面"等)。

${tempdir}

一个临时目录。

10、进程、线程和程序集

变量名

描述

${appdomain}

当前应用域。

${assembly-version}

默认应用程序域中可执行文件的版本。

${gc}

有关垃圾回收器的信息。

${hostname}

运行进程的计算机的主机名。

${local-ip}

来自网络接口的本地 IP 地址。

${machinename}

运行进程的计算机名称。

${performancecounter}

性能计数器。

${processid}

当前进程的标识符。

${processinfo}

有关正在运行的进程的信息,例如 StartTime、PagedMemorySize。

${processname}

当前进程的名称。

${processtime}

格式为 HH:mm:ss.mmm 的处理时间。

${threadid}

当前线程的标识符。

${threadname}

当前线程的名称。

11、ASP.NET 和 ASP.NET Core

变量名

描述

${aspnet-appbasepath}

ASP.NET应用程序基本路径(Content Root)

${aspnet-application}

ASP.NET应用程序变量

${aspnet-environment}

ASP.NET环境名称

${aspnet-item}

ASP.NET

'HttpContext' 项变量

${aspnet-mvc-action}

从路由参数获取的ASP.NET

MVC动作名称

${aspnet-mvc-controller}

从路由参数获取的ASP.NET

MVC控制器名称

${aspnet-request}

ASP.NET请求变量

${aspnet-request-contenttype}

ASP.NET

Content-Type头部(例如:application/json)

${aspnet-request-cookie}

ASP.NET请求cookie内容

${aspnet-request-form}

ASP.NET请求表单内容

${aspnet-request-headers}

ASP.NET请求头部键/值对

${aspnet-request-host}

ASP.NET请求主机

${aspnet-request-ip}

客户端IP

${aspnet-request-method}

ASP.NET请求方法(GET,POST等)

${aspnet-request-posted-body}

ASP.NET请求的提交主体/负载

${aspnet-request-querystring}

ASP.NET请求查询字符串

${aspnet-request-referrer}

ASP.NET请求引用者

${aspnet-request-routeparameters}

ASP.NET请求路由参数

${aspnet-request-url}

ASP.NET请求URL

${aspnet-request-useragent}

ASP.NET请求用户代理

${aspnet-response-statuscode}

ASP.NET响应状态码内容

${aspnet-session}

ASP.NET会话变量

${aspnet-sessionid}

ASP.NET会话ID变量

${aspnet-traceidentifier}

ASP.NET跟踪标识符

${aspnet-user-authtype}

ASP.NET用户身份验证类型

${aspnet-user-claim}

ASP.NET用户声明授权值

${aspnet-user-identity}

ASP.NET用户变量

${aspnet-user-isauthenticated}

ASP.NET用户是否已验证

${aspnet-webrootpath}

ASP.NET

Web根路径(wwwroot)

${iis-site-name}

IIS站点名称

推荐文档