python日志模块的日志处理程序,向kafka主题发送日志。
kafka-python-log-handler的Python项目详细描述
kafka python日志处理程序
将日志传递到kafka的标准logging
模块的处理程序。
当前的实现对于满足我们的需求来说是非常基本的,但是当父项目增长时,可能会出现额外的功能。
安装
这是在python 3.6.7中使用kafka-python
1.4.3和kafka 2.12开发的。
开发
测试将尝试通过默认值连接到kafka实例。
选择将KAFKA_HOST
和KAFKA_PORT
设置到计算机上的适当位置将更改此设置。
安装开发要求
$ pip install -r requirements-dev.txt
设置预提交挂钩
$ pre-commit install
如何使用
创建此处理程序的唯一必要条件是topic
将值推送到。
可选地,可以提供key
和/或partition
。
提供给处理程序的任何其他关键字值配置都将用于初始化kafka.KafkaProducer
。
向python记录器添加处理程序非常简单:
importloggingfromkafka_handlerimportKafkaLogHandlerhandler=KafkaLogHandler(topic="example_topic",key="example_key")# Default parameters for Kafka connection are usedlogger=logging.getLogger()# No name gives you the root loggerlogger.setLevel("WARNING")logger.addHandler(example_handler)logger.warning("This will push this message to the 'example_topic' in Kafka.")
配置Kafka连接
默认情况下,每个处理程序将创建一个kafka.KafkaProducer
实例,将每个参数从它们的__init__(**kwargs)
传递给kafkaproducer的实例化。
这意味着您可以根据需要配置连接,但是每个参数都应该提供关键字;Handler(host="localhost")
,而不是Handler("localhost")
。
所有可用的配置选项都在kafka-python documentation中可用。
handler=KafkaLogHandler(topic="topic",bootstrap_servers="other_host:9092",retries=0)
配置消息日志
每个处理程序都有raw_logging
选项,可以选择性地提供。
从初始化中省略它,将默认为False
,这意味着正在记录的消息将纯粹是发送的消息。
如果将其设置为True
,首先将记录内容,然后将其附加到行号,最后是路径名。
raw_handler=KafkaLogHandler(topic="topic",raw_logging=True)...logging.info("Test message")
纯处理程序将发出如下消息:Test message.
,
但是,raw_handler
将发出如下消息:Test message. - 2: /.../file.py
。