ydf0509 / nb_log

pip install nb_log 各种日志handler和自动转化项目的任意print的效果。日志自动彩色炫酷,可点击控制台的日志自动精确跳转到pycharm的文件和行号。文件日志多进程切割安全。在10个最重要方面全方位超过loguru
375 stars 72 forks source link

is_add_elastic_handler =True 后 报错 Action/metadata line [1] contains an unknown parameter [_type] #68

Closed anjia0532 closed 2 months ago

anjia0532 commented 2 months ago

配置了 is_add_elastic_handler=True 后 报Action/metadata line [1] contains an unknown parameter [_type]

https://github.com/ydf0509/nb_log/blob/master/nb_log/handlers_more.py#L391 删除 _type 后正常

我的环境是

python 3.11

funboost 43.3
  -> 自动安装的 nb_log和elasticsearch
  nb_log12.4
  elasticsearch 8.13.0

elasticsearch server 是 elasticsearch:8.11.1

ydf0509 commented 2 months ago

把 _type的值固定写 '_doc' 试试

ydf0509 commented 2 months ago

不同的es服务版本不同,es 服务端高版本不用设置 doc_type

ydf0509 commented 2 months ago

那我测试时候没用那么高的服务端版本,高版本去掉了 doc_type

ydf0509 commented 2 months ago

image image

这是elatic的改版历史

ydf0509 commented 2 months ago

es高版本服务端不能传type了.

ydf0509 commented 2 months ago

提交代码了,今后不兼容es7以前的服务端.

anjia0532 commented 2 months ago

对,es 有好多破坏性更新,相对来说往logstash写数据兼容性更好些(当然性能肯定赶不上直写ES)

ydf0509 commented 2 months ago

目前好像很少人使用 控制台和文件以外的日志handler,99%的人认为日志就是控制台和写文件,我自己也比较少用es mongo 这些handler.

anjia0532 commented 2 months ago

我对 python 生态了解的不太多,我这边主要用的Java。微服务场景下Java这边用ELK(ES,Logstash,Kibana)还挺常见的(否则的话一个业务跨多个应用或者多个模块,日志分布在不同的模块,服务器,机房,容器,很难把一次业务串起来)。

可以把ES当做一个私有的日志百度。拿着关键字搜就行了。而传统的写文件,日志少了还好,多了以后,就得cat | grep ,挺难用的其实。

尤其是公司内,多人协作时,出问题后,直接丢一个日志链接过去比直接丢一个大几个G日志文件更友好一些。

当然传统的写文件这块,ELK也有类似方案,使用FileBeat可以直接解析日志文件,然后上报到ES里。