我想截取即将由serilog编写的日志,并根据某种逻辑对其进行修改,即在日志中查找一些敏感信息并对其进行屏蔽。
到目前为止,我找到的最接近的是找到ILogEventEnricher
public class LogEnricher : ILogEventEnricher
{
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
{
//do something here, but what?
}
}
,但LogEvent的MessagTemplate属性为只读。 任何想法,我如何截取日志并在记录之前对其进行修改。
答案 0 :(得分:1)
使用Serilog处理该问题的一种常用方法是告诉Serilog在分解对象时不要记录某些属性。
例如,通过Destructurama.Attributed
:
public class LoginCommand
{
public string Username { get; set; }
[NotLogged]
public string Password { get; set; }
}
您可以在以下博客文章中了解更多信息: Using attributes to control destructuring in Serilog 。
您也可以通过Destructurama.ByIgnoring
Log.Logger = new LoggerConfiguration()
.Destructure.ByIgnoringProperties<User>(u => u.Password)
// Other logger configuration
.CreateLogger()