不要在序列化的审核事件中包含环境



在 Audit.NET 输出的环境属性中,没有任何属性(域名、机器名称等(对我们真正有用,并且在我们的审计数据库中占用了大量额外空间。

要删除它们,我发现我可以这样做:

auditScope.Event.Environment = new AuditEventEnvironment()

。或者我可以在跳过环境属性的Audit.Core.Configuration.JsonSettings.ContractResolver上放置一个自定义合同解析程序。

但是有没有更好的方法来禁用环境属性?

在问题中提到的选项中,这是唯一一个从序列化审核条目中完全删除环境的选项。另一个选项序列化为空的环境对象(如果环境设置为 null,则得到一个 NullReferenceException(。

在 ConfigureServices 中,将 ContractResolver 设置为 EnvironmentSkippingContractResolver:

Audit.Core.Configuration.JsonSettings.ContractResolver = EnvironmentSkippingContractResolver.Instance;

环境跳过合约解析器如下所示:

public class EnvironmentSkippingContractResolver : DefaultContractResolver
{
public static readonly EnvironmentSkippingContractResolver Instance = new EnvironmentSkippingContractResolver();
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
property.ShouldSerialize = instance => member.Name != "Environment";
return property;
}
}

最新更新