卡夫卡日志处理程序
kafkaloghandler的Python项目详细描述
卡夫卡罗甘德勒
提供与pythonlogging兼容的处理程序,用于向 卡夫卡消息总线。
依赖于汇合的卡夫卡模块连接到卡夫卡。
设计为支持标准和结构日志格式,并序列化日志 数据作为json发布为kafka消息时。消息被规范化为 更兼容logstash/filebeat格式。
用法
示例:
import logger from kafkaloghandler import KafkaLogHandler log = logging.getLogger() klh = KafkaLogHandler(bootstrap_servers=["test-kafka:9092"], topic="testtopic") log.addHandler(klh) data={'example':'structured data'} log.info('message to send to kafka', data=data)
可提供给kafkaloghandler的参数:
- 引导服务器 要连接到的Kafka引导服务器列表。
- 额外配置
额外{a1}字典 传递给librdkafka。
注意:参数bootstrap_servers将覆盖 bootstrap.servers。
默认值:{}
- 超时
刷新生产者队列的超时(秒)。参见librdkafka文档。
默认值:10.0
- 主题 在卡夫卡中设置主题的字符串。
- 键
在kafka中设置默认键的字符串,可用于在kafka中进行摘要。
注意:可以通过传递 dict到日志记录器,其中包含{"key": "new_key_for_this_message"}。
默认值:"klh"
- 扁平化
扁平化作为结构化登录传递到父级的嵌套字典和列表 字典层,达到一定深度。
这在登录到没有良好支持的外部系统时非常有用 用于分层数据。
示例字典:{'a': {'b': 'c'}}将被展平为{'a.b': 'c'}
示例列表:{'a': ['b', 'c']}将展平为{'a.0': 'b', 'a.1': 'c'}
如果超过深度,任何剩余的较深项目将添加到 在展平键下输出。
设置为0可关闭展平。
默认值:5
- 分隔符 扁平化时在项目之间使用的分隔符。
- 黑名单
输出json时要从结构化日志中丢弃的顶级键的列表。
默认值:["_logger", "_name"]
默认值:["localhost:9092"]
默认值:"kafkaloghandler"
默认值:.
测试
可以使用tox
运行单元测试