gpt4 book ai didi

elasticsearch - 调整SeriLog中的ElasticsearchSinkOptions.NumberOfShards在.Net核心中不起作用

转载 作者:行者123 更新时间:2023-12-02 23:48:49 25 4
gpt4 key购买 nike

我在通过SeriLog编写日志时为ElasticSearch设置NumberOfShards时遇到问题。
我在.Net Core中为Serilog进行配置

 .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(config.ElasticConnectionUrl))
{
AutoRegisterTemplate = true,
IndexFormat = config.ElasticIndex + "-{0:yyyy.MM.dd}",
NumberOfShards = 2,
NumberOfReplicas = 0
}));

但是,当我在Kibana中查询创建的索引的设置时,numberOfShards仍为5(默认值)。即使对于NumberOfReplicas也不会影响。

我正在使用ELK堆栈来跟踪日志。

有谁知道为什么?

最佳答案

您可以在代码中或在appSettings.json配置中进行Serilog配置。如果您这样做:

var loggerConfiguration = new LoggerConfiguration()
.ReadFrom.Configuration(configuration) // <= this reads from config
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(config.ElasticConnectionUrl))
{
AutoRegisterTemplate = true,
IndexFormat = config.ElasticIndex + "-{0:yyyy.MM.dd}",
NumberOfShards = 2,
NumberOfReplicas = 0
})); // this gets partially ignored
并且您具有以下配置文件:
"Serilog": {
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "Elasticsearch",
"Args": {
"nodeUris": "http://localhost:9100"
}
}
]
}
如果您在JSON文件中将索引格式留空,则可能会有一个名为“log-stash- {0:YYYY-MM-DD}”的索引,但您还将拥有一个在代码中添加。 URI也是如此。如果您在JSON接收器 WriteTo和代码的 ElasticsearchSinkOptions中添加了一个,则可能会有两个。
配置为JSON或代码。选择一个(可悲)。有关更多信息,请参见此: https://github.com/serilog/serilog-sinks-elasticsearch/issues/180
我一直在寻找一种在代码中具有默认配置的方法,该默认配置可能会被配置文件覆盖,因为我正在尝试为我们公司的各种API创建通用的IHostBuilder,但是Serilog的运行很好。我的解决方案是将Sinks配置移出Serilog配置部分,并分别定义并自己加载(以相同格式-字符串名称,Args词典 ),然后在以下位置手动创建配置码。

关于elasticsearch - 调整SeriLog中的ElasticsearchSinkOptions.NumberOfShards在.Net核心中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com