如何在ASP.NET Core 8 Web应用中配置Elastic.Serilog.Sinks 8.11?
从Serilog.Sinks.Elasticsearch迁移到Elastic.Serilog.Sinks的配置
以下是与你旧版配置功能完全对齐的新版Elastic.Serilog.Sinks 8.11配置代码:
Log.Logger = new LoggerConfiguration() .MinimumLevel.Information() .Enrich.FromLogContext() .WriteTo.Console(Serilog.Events.LogEventLevel.Information) .WriteTo.Elasticsearch([new Uri(Configuration["ElasticPath"])], opts => { // 配置Elasticsearch基础认证 opts.ClientSettings = new ElasticsearchClientSettings(opts.NodeUris.First()) .BasicAuthentication("username", "password"); // 沿用旧版的按月滚动索引命名规则 opts.IndexFormat = $"projectx-{Configuration["Environment"]}-{DateTime.UtcNow:yyyy-MM}"; // 禁用默认的数据流模式,使用普通索引(与旧版行为一致) opts.DataStream = null; // 自动注册索引模板,替代旧版AutoRegisterTemplate相关配置 opts.BootstrapMethod = Elastic.Ingest.Elasticsearch.BootstrapMethod.IndexTemplate; opts.IndexTemplateName = "projectx-log-template"; opts.IndexTemplatePatterns = new[] { $"projectx-{Configuration["Environment"]}-*" }; // 设置批量操作类型为Create,与旧版BatchAction一致 opts.BatchAction = Elastic.Ingest.Elasticsearch.BatchAction.Create; // 配置失败回调与处理策略 opts.FailureCallback = (e, ex) => Console.WriteLine($"无法提交日志事件:{e.MessageTemplate}"); opts.EmitEventFailure = Elastic.Ingest.Elasticsearch.EmitEventFailureHandling.WriteToSelfLog | Elastic.Ingest.Elasticsearch.EmitEventFailureHandling.RaiseCallback; }) .CreateLogger();
关键配置项对应说明
- 基础认证:旧版通过
ModifyConnectionSettings注入认证逻辑,新版直接通过opts.ClientSettings构建带认证的客户端配置。 - 索引命名:新版保留了
IndexFormat属性,但默认启用数据流模式,若要沿用旧版普通索引,需显式将DataStream设为null。 - 索引模板注册:旧版
AutoRegisterTemplate和AutoRegisterTemplateVersion对应新版的BootstrapMethod = IndexTemplate,同时需指定模板名称和匹配的索引前缀。 - 批量操作:旧版
ElasticOpType.Create对应新版BatchAction.Create,确保日志以创建而非更新的方式写入。 - 失败处理:
FailureCallback直接沿用旧版逻辑;EmitEventFailure枚举值迁移到Elastic.Ingest.Elasticsearch命名空间下,功能与旧版完全一致。 - 类型名称:新版无需设置
TypeName,因Elasticsearch 7+已废弃文档类型概念,默认不包含类型字段。
内容的提问来源于stack exchange,提问作者Ömer Faruk Mızıkacı
相关产品推荐
相关产品推荐

