【问题标题】:NLog Replace Layout Renderer not work with json contentNLog Replace Layout Renderer 不适用于 json 内容
【发布时间】:2021-04-07 14:16:54
【问题描述】:

我使用第三方包,依赖于Nlog 4.7和NLog.AspNetCore 4.8,包会写日志。

在我的 Nlog.config 中

<logger name="package namespace" level="Info" writeTo="packageFile" />
<target xsi:type="File" name="packageFile" fileName="${baseFilePath}/packageFile.log" KeepFileOpen="true" layout="${message}" concurrentWrites="true" />

它的工作,但现在我需要替换消息中的内容。我找到了我需要的Replace Layout Renderer

消息是这样的json字符串:

{"ABC":{"DEF":"AA00014325","GHI":"01"}} 

我想把消息替换成

{"ABC":{"DEF":"A****14325","GHI":"01"}} 

这是我使用的模式:[A-Z]\d{1}\d{2} 我用它来测试它:https://regex101.com/

更新: 我也尝试.NET Regex Tester的模式

我的 Nlog.config 是这样的:

<variable name ="messageReplace" value="${replace:inner=${message}:searchFor=[A-Z]\\d{1\}\\d{2\}:replaceWith=****:regex=true}" />
<logger name="package namespace" level="Info" writeTo="packageFile" />
<target xsi:type="File" name="packageFile" fileName="${baseFilePath}/packageFile.log" KeepFileOpen="true" layout="${messageReplace}" concurrentWrites="true" />  

但这不行……

我像这样更改我的 Nlog.config:

<variable name ="message1" value="AA00014325" />
<variable name ="messageReplace" value="${replace:inner=${message1}:searchFor=[A-Z]\\d{1\}\\d{2\}:replaceWith=****:regex=true}" />
<logger name="package namespace" level="Info" writeTo="packageFile" />
<target xsi:type="File" name="packageFile" fileName="${baseFilePath}/packageFile.log" KeepFileOpen="true" layout="${messageReplace}" concurrentWrites="true" /> 

它正在工作...但是如果将 message1 更改为

"AA00014325"

它不再工作了....为什么?

我想替换消息中的json字符串,怎么办?

信息:

  • 平台:ASP.NET Core 3
  • Nlog 版本:4.7
  • NLog.AspNetCore 版本:4.8

谢谢!

【问题讨论】:

  • 我这边的正则表达式似乎不匹配,仔细检查regexstorm.net/tester
  • @DaneBalia 我在 .NET Regex Tester 上尝试正则表达式 [A-Z]\d{1}\d{2} 是可以的

标签: c# json regex nlog


【解决方案1】:

所以使用这个配置,我让它按照屏幕截图工作。 需要记住的是,配置是 XML 所以到escape correctly。但我看你是对的✔。所以我相信这取决于你的正则表达式。

 <variable name="messageNoDigits" value="${replace:inner=${message}:searchFor=[A-Z]\\d\{3\}:replaceWith=****:regex=true}" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2017-01-27
    • 2012-01-11
    相关资源
    最近更新 更多