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

Serilog.Sinks.Graylog在Web API正常,控制台应用无法日志到Graylog

ASP.NET Core应用可正常向Graylog发送日志,但控制台应用高版本Serilog.Sinks.Graylog失效

我在Windows系统的Docker Desktop中运行Graylog实例,已启用UDP和HTTP输入。ASP.NET Core应用能正常将日志发送至Graylog,但控制台应用无法实现该功能。


ASP.NET Core应用配置

Program.cs核心配置

builder.Host.UseSerilog((context, configuration) =>
{
    configuration
          .ReadFrom.Configuration(context.Configuration)
          .WriteTo.Graylog(new GraylogSinkOptions()
          {
              HostnameOrAddress = "localhost",
              Port = 12201,
              TransportType = TransportType.Http
          });
});

后续请求日志配置

app.UseSerilogRequestLogging();

依赖包清单

<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
<PackageReference Include="Serilog.Sinks.Graylog" Version="3.1.1" />

启动ASP.NET应用后,日志可正常出现在Graylog实例中。


控制台应用配置

日志初始化代码

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.Console()
    .WriteTo.File("log.txt",
      rollingInterval: RollingInterval.Day,
       rollOnFileSizeLimit: true)
    .WriteTo.Graylog(new GraylogSinkOptions()
    {
        HostnameOrAddress = "localhost",
        Port = 12201,
        TransportType = TransportType.Http,
        Facility = "Test App"

    })
    .CreateLogger();

依赖包清单

<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Serilog" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.Graylog" Version="3.1.1" />

控制台应用可正常输出日志到控制台和本地文件,但无日志发送至Graylog。通过Fiddler Classic可捕获到Web应用的流量、控制台应用调用Graylog API的流量,却看不到日志相关的传输流量。


调试与版本兼容性问题

添加Serilog自调试代码后,未触发任何异常或错误提示:

Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

控制台应用使用Serilog.Sinks.Graylog 3.0.2版本时可正常向Graylog发送日志,但3.0.2以上版本均失效;而这些高版本在ASP.NET Core应用中却能正常工作,疑似存在兼容性问题。

控制台应用Main方法完整代码

static async Task Main(string[] args)
{
    Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Debug()
        .Enrich.FromLogContext()
        .WriteTo.Graylog(new GraylogSinkOptions()
        {
            HostnameOrAddress = "localhost",
            Port = 12201,
            TransportType = TransportType.Http,
            Facility = "Test App",
        })
        .CreateLogger();
    Log.Information("This is a test message");
    Log.CloseAndFlush();
}

内容的提问来源于stack exchange,提问作者Scott K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:04:51