我正在使用ASP.NET核心记录抽象作为我的应用程序。
我有一个敏感的字符串列表,我想确保在发送到任何水槽时在日志中掩盖" *****"。(我正在使用Serilog-但也许甚至可以在Serilog之前插入(。
我如何将其插入ASP.NET核心记录系统中,以将所有这些敏感字符串替换为" *******",然后发送到任何水槽/作家等。
而不知道您要擦洗的内容,有一些选择。
在这个GitHub问题中有几个好主意。
总结线程:您可以使用浓度完全擦除属性的内容。您也可以使用文本格式器手动运行正则替换。
也提到了一些软件包,您可以添加以提供更多结构,以处理日志:
- serilog.logsanitizingformatter
- Destructurama.Tributed
- destructurama.byignoring
我有一个类似的问题,在记录过程中我需要从对象中编辑/隐藏某些字段。
对于简洁起见,让我们假设对象是
public class User
{
public string UserName { get; set; }
public string Password { get; set; }
public override string ToString()
{
return base.ToString();
}
}
现在,我们使用对象破坏性操作员(@(
与Serilog登录User user = new User() { UserName = "u", Password = "p" };
_logger.LogWarning("value is {@val}", user);
为了隐藏密码道具,我们可以在下面设置serilog
Log.Logger = new LoggerConfiguration()
.WriteTo.Console(new Serilog.Formatting.Json.JsonFormatter())
.Destructure.ByTransforming<User>(_ => new { User = _.UserName })
.CreateLogger();
现在,对于对象用户的任何记录,它都不会在其中包含密码字段,或者您可以通过设置密码=&quort =&quot; ######&quot'
编辑密码字段P.S。理想情况下,我们不应该记录任何敏感的内容,但有时我们需要记录整个对象,而某些道具不需要记录且以上是一种集中的方法来处理此类情况,而不是审查代码中的每一个提交以验证这一潜在错误。<<<<<。/p>