不使用Kibana如何直接读取Elasticsearch中存储的Serilog生成的日志
无Kibana读取Elasticsearch中Serilog日志的方案
- 原生REST API调用:Elasticsearch本身对外提供标准REST查询接口,你可以直接向
/{日志索引前缀}*/_search端点发起POST请求,按照ES的DSL查询语法构造请求体,就能拿到匹配条件的Serilog日志数据,Serilog写入的日志默认包含@timestamp、level、message、fields等固定字段,可直接作为查询过滤条件,该方案不需要引入额外依赖,适合简单查询场景。 - 官方.NET客户端集成:可以使用Elasticsearch官方推出的.NET客户端包,目前新版为
Elastic.Clients.Elasticsearch,旧版常用Nest,客户端已经封装了完整的查询、聚合、序列化能力,你可以直接在C#项目中引入包后编写强类型的查询代码,无需自行处理HTTP请求和响应解析,官方提供了全量的查询示例可参考。 - 第三方封装工具/包:如果需要现成的可视化查询能力,可以用轻量的ES桌面客户端工具,直接配置ES连接地址即可查询日志,无需额外部署服务;如果是要在自有业务系统中嵌入日志查询模块,也可以使用针对Serilog Elasticsearch Sink做了适配的开源封装包,已经预设了Serilog日志的字段映射,不需要自行适配索引结构,开发成本更低。
- 不需要完全从零自主开发,上述方案已经可以覆盖绝大多数日志查询、分析场景,只有特殊的自定义日志处理需求才需要做针对性的二次开发。
Windows PowerShell启动Kafka异常问题说明
该情况不属于正常现象,核心原因是你下载的Kafka 2.8.0安装包为Linux/macOS版本,包内的Zookeeper、Kafka启动脚本均为.sh格式的Shell脚本,Windows原生PowerShell无法直接识别执行,因此会弹出打开方式选择窗口。
解决思路参考:
- 下载适配Windows系统的Kafka发行包,包内会提供
.bat格式的启动脚本,在PowerShell中执行bat脚本即可正常启动服务 - 本地部署WSL2环境,在WSL2的Linux终端中执行你已经下载的安装包内的Shell脚本,可正常运行
- 改用Docker镜像部署Kafka和Zookeeper,无需本地解压安装,编写简单的docker-compose配置即可一键启动服务,避免系统环境适配问题
内容的提问来源于stack exchange,提问作者NoviceCoder
相关产品推荐
相关产品推荐

