Serilog.Sinks.Graylog在.NET Core环境下无法写入日志到Graylog面板
修复方案
1. 核心配置错误修正
你当前代码中GraylogSinkOptions的HostnameOrAddress参数填写错误:该字段仅需传入Graylog服务的IP或域名,不需要附带Graylog Web面板的端口号。你错误填入了Web访问地址127.0.0.1:9000,修改后的正确配置如下:
var loggerConfig = new LoggerConfiguration(); loggerConfig // 配置最小日志级别,避免低于级别的日志被过滤 .MinimumLevel.Debug() .Enrich.FromLogContext() .Enrich.WithProperty("source", "xxx-yyy") .Enrich.WithProperty("test", "test9999"); loggerConfig.WriteTo.Graylog(new GraylogSinkOptions { // 仅保留IP/域名,不要加Web面板端口 HostnameOrAddress = "127.0.0.1", Port = 12201, // 与Graylog端创建的GELF输入协议保持一致,可选Udp/Tcp/Http TransportType = TransportType.Udp });
2. 其余可排查项
- 确认Graylog端已创建对应传输协议的GELF输入,且监听端口确实为12201,输入未被禁用
- 检查运行应用的服务器与Graylog服务器之间的网络连通性,12201端口未被防火墙、安全组拦截
- 开启Serilog自我诊断查看具体报错,可快速定位剩余问题:
// 放在Logger配置之前,运行后可在控制台看到Serilog写入时的异常信息 Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));
内容的提问来源于stack exchange,提问作者Asjad Majid
相关产品推荐
相关产品推荐

