You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Serilog.Sinks.Seq设置JsonSerializerOptions.DefaultIgnoreCondition忽略空值

解决Serilog.Sinks.Seq忽略空值属性的配置方法

要让Serilog输出到Seq时忽略空值属性,你需要自定义JSON格式化器并设置对应的JsonSerializerOptions,具体修改如下:

步骤1:确保引用必要的包

如果项目未引用Serilog.Formatting.Json,先通过NuGet安装:

Install-Package Serilog.Formatting.Json

或使用.NET CLI:

dotnet add package Serilog.Formatting.Json

步骤2:修改Serilog配置代码

在原有的UseSerilog配置块中,为Seq sink指定自定义的JsonFormatter,并配置DefaultIgnoreCondition为WhenWritingNull:

using System.Text.Json;
using IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices((context, services) =>
    {
        services.AddHostedService<Worker>();
    })
    .UseSerilog((context, config) =>
    {
        var seqUri = new Uri(context.Configuration["SeqUri"]!);
        var seqApiKey = context.Configuration["SeqApiKey"]!;

        config.MinimumLevel.Debug()
            .WriteTo.Seq(
                seqUri.AbsoluteUri,
                apiKey: seqApiKey,
                formatter: new JsonFormatter(
                    renderMessage: true,
                    jsonSerializerOptions: new JsonSerializerOptions
                    {
                        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
                    })
            );
    })
    .Build();

await host.RunAsync();

关键说明

  • JsonFormatter的jsonSerializerOptions参数允许直接传入System.Text.Json的配置选项,DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull会让序列化器忽略值为null的属性。
  • renderMessage: true保持默认行为,确保日志消息被渲染后输出,不需要的话可设为false。

内容的提问来源于stack exchange,提问作者Louis S. Berman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:01:01