我有一个大型复杂的应用程序,它大量使用python日志模块。
我需要开始将这些日志放到kafka集群中,并且需要确保不会在过程中更改数据。
对我来说,理想的解决方案是只为kafka创建一个新的处理程序,并允许日志同时进入旧的日志解决方案和kafka一段时间。然后最终关闭旧的日志处理程序,直接发送给Kafka。
但是,我没有看到任何kafka日志处理程序-只有kafka客户端。添加一个kafka客户机意味着跟踪当前的每个日志调用,并向新的kafka客户机添加一个单独的调用。很难得到相同的结果。
我有一个大型复杂的应用程序,它大量使用python日志模块。
我需要开始将这些日志放到kafka集群中,并且需要确保不会在过程中更改数据。
对我来说,理想的解决方案是只为kafka创建一个新的处理程序,并允许日志同时进入旧的日志解决方案和kafka一段时间。然后最终关闭旧的日志处理程序,直接发送给Kafka。
但是,我没有看到任何kafka日志处理程序-只有kafka客户端。添加一个kafka客户机意味着跟踪当前的每个日志调用,并向新的kafka客户机添加一个单独的调用。很难得到相同的结果。
2条答案
按热度按时间wljmcqd81#
处理程序实现非常简单。实际上,设置环境比实现处理程序花费更多的时间。
处理程序构造函数接受可选参数
key
. 如果提供了,则写入的消息将被发送到由该键指定的单个分区。如果没有提供,消息将在服务器之间以循环方式分发。我没有做过太多的测试,但它很简单,我看不出这里会出什么问题。希望它有用。
p、 处理程序使用这个kafka客户端:https://github.com/mumrah/kafka-python
s8vozzvw2#
这是一个很棒的修复,谢谢!这段代码在过去几年中已经进行了一些更新,有些函数现在已经被弃用了。这个补丁的总体设计非常非常有用,不过再次感谢您。
这是我修改后的代码片段,使用kafka1.0.0和kafkapython1.4.2,只是生产者,因为我通过另一端的logstash消费。
希望这对你有用!
tester.py(主例程)
utils/kafka\u handler.py(日志实用程序)