.net - Serilog Elasticsearch 日志未发送到服务器(但正确缓冲)
问题描述
我在 Windows IIS Web 服务器上本地托管了一个 ELK 堆栈(v7.0),并且日志没有发送到服务器。服务器正在运行,我可以访问保留的 URL 并取回通用 json 包,说 Elasticsearch 正在运行,我可以很好地登录 Kibana,只是没有日志可看。
我在正在记录的应用程序中设置了一个 bufferBaseFilename,当我去那个位置时,日志实际上就在那里,正确索引和所有。我想知道为什么它永远不会同步回服务器?这似乎是一个连接问题,但所有网络内容都已检查。我可能错过了一些简单的东西。有什么想法吗?如果您需要更多信息,请与我们联系!
解决方案
此错误的常见来源是与您的 ES 版本不匹配的格式错误(模板)请求(例如,包含不推荐使用的字段)。你可以尝试
- 使用nuget 包的预览版
- 设置
DetectElasticsearchVersion
为true
- 设置
RegisterTemplateFailure
为IndexAnyway
您可以像这样配置接收器:
var loggerConfig = new LoggerConfiguration()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(...) ){
// ...
DetectElasticsearchVersion = true,
RegisterTemplateFailure = RegisterTemplateFailure.IndexAnyway
});
推荐阅读
- mysql - information_schema.profiling 中的 CPU_USER 是什么意思
- nginx - 当发送的消息过多时,具有实时消息传递功能的 Web 应用程序会挂起
- ios - Auto hidden keyboard after enter six characters
- javascript - How to expire div on specific day?
- c# - Linq to Sql DataContext 线程安全
- ruby - 正则表达式捕获组不包括
- bash - 从 bash 和 python 访问 ~/.ssh/config 别名
- ruby-on-rails - ransack rails:不适用于使用 *_in 匹配器的空值
- javascript - 如何在ajax调用中获得迭代ID的结果
- colors - Scilab colorbar - 拳头和最后一个颜色更小