nlog - 带有非格式化消息的 JsonLayout
问题描述
我对 JsonLayout 没什么问题
NLog 版本:4.7.10 平台:netcoreapp 3.1
当前的 Nlog 配置
<target name="jsonFileMw" xsi:type="File" fileName="logs\mw.log"
archiveAboveSize="10240"
maxArchiveDays="5"
archiveNumbering="DateAndSequence"
archiveEvery="Day"
enableArchiveFileCompression="true">
<layout xsi:type="JsonLayout" includeAllProperties="true">
<attribute name="time" layout="${longdate}" />
<attribute name="level" layout="${level:upperCase=true}"/>
<attribute name="message" layout="${message}" />
</layout>
</target>
我的日志记录代码
_logger.LogInformation("request received. {RequestUrl} {RequestBody}", "some url", "some body");
此日志记录代码产生以下日志行:
{ "time": "2021-08-02 15:07:30.8198", "level": "INFO", "message": "request received. some url some body", "RequestUrl": "some url", "RequestBody": "some body" }
如您所见,这会将日志属性添加到消息中,这也意味着两次记录相同的信息。结果日志文件大小增加。我只想保持消息简单。所需的输出如下:
{ "time": "2021-08-02 15:07:30.8198", "level": "INFO", "message": "request received. {RequestUrl} {RequestBody}", "RequestUrl": "some url", "RequestBody": "some body" }
我怎样才能做到这一点?
解决方案
你可以这样做:
<attribute name="messagetemplate" layout="${message:raw=true}" />
另见:https ://github.com/NLog/NLog/wiki/Message-Layout-Renderer
另请参阅:https ://github.com/NLog/NLog/wiki/How-to-use-structured-logging#output-captured-properties
推荐阅读
- java - 为什么这段代码运行一段时间后总是什么也不打印?
- apache - 我们的应用程序中存在一个称为不安全传输的漏洞:弱 SSL 协议如何在 Apache 中解决此问题
- python - 使用 python pandas 分隔符或删除竖线
- node.js - 程序列表中的电子生成器应用程序名称,Windows 上没有版本
- c++ - “ReadFile 函数”有没有办法让我不再声明要读取的特定字节数?
- json - 如何在 GO 中将换行符转换为正确的 JSON?
- python - 使用 groupby、pivot 和 transpose 进行 Python pandas 数据帧转换
- android - 错误:程序类型已存在:com.facebook.ads.Ad
- opencl - 如何将 OpenCL 代码从 FP32 转换为 FP16?
- angularjs - ng2-smart-table 显示对象列表