在 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;
}
}