audit.net - 不要在序列化的 AuditEvents 中包含环境
问题描述
在 Audit.NET 输出的 Environment 属性中,没有一个属性(DomainName、MachineName 等)对我们真正有用,并且在我们的审计数据库中占用了大量额外空间。
要删除它们,我发现我可以这样做:
auditScope.Event.Environment = new AuditEventEnvironment()
...或者我可以在其上放置一个自定义 ContractResolver 以Audit.Core.Configuration.JsonSettings.ContractResolver
跳过 Environment 属性。
但是有没有更好的方法来禁用 Environment 属性?
解决方案
在问题中提到的选项中,这是唯一一个从序列化审计条目中完全删除 Environment 的选项。另一个选项序列化为一个空的 Environment 对象(如果 Environment 设置为 null,那么您会得到 NullReferenceException)。
在 ConfigureServices 中将 ContractResolver 设置为 EnvironmentSkippingContractResolver:
Audit.Core.Configuration.JsonSettings.ContractResolver = EnvironmentSkippingContractResolver.Instance;
EnvironmentSkippingContractResolver 看起来像这样:
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;
}
}
推荐阅读
- c++ - gRPC:使用 C++ 从服务器推送通知
- deserialization - Avro:记录反序列化问题
- c# - C#:有什么聪明的方法可以消除这种冗余代码吗?
- amazon-web-services - 在同一位置重命名 S3 对象以删除 Glue 书签
- json - 如果它们都在数组中,如何将一个对象数组的属性与另一个对象的属性匹配?
- python - 为什么seaborn boxplot中的四分位数与ploty不同?我怎样才能让他们向我展示相同的结果?
- http-live-streaming - OBS - m3u8 文件中列出的 TS 文件数量增加
- python - 为什么我不能使用 PIL 将我从 WebP 下载的图像转换为 JPG?
- python - python超类可以从其子类调用函数吗?
- python - Google 图书 API 作者