【发布时间】:2020-05-06 13:23:40
【问题描述】:
我是 NLog 的新手,想知道是否有办法编写以某种自定义方式格式化的日志条目?例如,以下是我想要对我的日志条目做的一些事情:
--> 具有嵌套的日志条目消息(不包括日志条目元数据),以使日志调用堆栈的深度更易于跟踪。这可以通过按您在日志调用堆栈中的深度按比例缩进日志条目字符串来完成
--> 使用所有相关的日志条目记录一个“更改 ID”(基本上是与正在处理的某个请求相关联的某种 ID)
我知道 NLog 有一些你可以使用的模板和东西,但我希望有更多的控制,以自定义格式化类或其他东西的形式,它会在我每次执行 Log.Info(...) 时拦截日志记录请求,然后根据我选择的行为适当地格式化我的日志条目字符串。
这可能吗?
编辑:
这是我当前的 NLog.config 文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="true" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<targets>
<target name="logfile" xsi:type="File" fileName="logfile.log" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="logconsole" />
<logger name="*" minlevel="Trace" writeTo="logfile" />
</rules>
</nlog>
【问题讨论】:
-
对于“更改 ID”,您可以将相关 ID 插入
LogEventInfo.Properties或使用CorrelationManager.ActivityId。另见github.com/NLog/NLog/wiki/Context