我正在使用 ${aspnet-request-post-body}
将请求正文记录在日志文件中。我面临的问题:我想阻止 ${aspnet-request-post-body}
记录一些信息,例如密码和信用卡详细信息,我喜欢对它们应用屏蔽。
例如,如果请求正文是
{用户名:ABC,密码:554&3}
这应该以这种格式记录
{用户名:ABC,密码:****}
请注意,我已经针对此问题尝试过替换布局,但不想使用它。还有其他方法可以完成这项任务吗?
最佳答案
${aspnet-request-post-body}
只是 NLog 的文本。
所以你有以下选择:
替换所有内容(使用正则表达式):配置示例替换所有:
<variable name="messageNoDigits" value="${replace:inner=${message}:searchFor=(\\d{3\})+:replaceWith=:regex=true}" />
编写您自己的自定义布局渲染器,将正文解析为 JSON 并对其进行转换。请注意,在 ASP.NET Core 中读取主体可能有点棘手,请参阅 the current code in NLog for it .如果您有读取/转换正文的代码,它可以很容易地转换为 NLog 布局渲染器:
using NLog.Web.LayoutRenderers; // register ${SanitizedBody} AspNetLayoutRendererBase.Register("SanitizedBody", (logEventInfo, httpContext, loggingConfiguration) => MyMethod(httpContext));
参见 https://github.com/NLog/NLog/wiki/How-to-write-a-custom-layout-renderer
关于c# - 如何防止 ${aspnet-request-posted-body} 不记录敏感信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64470868/