我想过滤掉任何日志文件中的任何16个并发数字。例如,如果我的日志消息最初是:
"you blah 01234567890123456 foo"
我希望它只记录:
"you blah foo"
我不知道要实现什么,因为它看起来像过滤器阻止记录整个邮件。我想在记录之前更改要记录的消息。
答案 0 :(得分:2)
您可以使用replace layout render将$message
打包到目标布局中,
用另一个字符串替换另一个布局的输出中的字符串。
使用以下配置:
<targets>
<target xsi:type="Console" name="console"
layout="${replace:searchFor=\\d\{17,17\}\\s:replaceWith=:regex=true:inner=${message}}"/>
</targets>
以及以下日志记录代码
var logger = LogManager.GetCurrentClassLogger();
logger.Info("you blah 01234567890123456 foo");
这就是控制台输出的样子:
你好吗?
因为您可以使用任何正则表达式,您可以使用配置来正确删除或保留数字周围的空白区域,只需注意特殊字符的编码。