Kafka日志处理器 Python3版本实现

那年仲夏 提交于 2021-01-01 22:16:53
  1. Kafka 日志处理器
import json
import logging
from kafka import KafkaProducer


class KafkaHandler(logging.Handler):
    def __init__(self, host_list, topic='corp_it_testing', tls=None):
        """
        :param host_list: kafka 主机集群地址(ip:port)
        :param topic:  kafka 主题设置
        :param tls:
        """
        logging.Handler.__init__(self)
        self.producer = KafkaProducer(bootstrap_servers=host_list,
                                      value_serialers=lambda v: json.dumps(v).encode('utf-8'),
                                      linger_ms=10)

        self.topic = topic

    def emit(self, record):
        # 屏蔽 kafka自身日志
        if 'kafka' in record.name:
            return
        try:
            msg = self.format(record)
            self.producer.send(self.topic, {'message': msg})
            self.flush(timeout=1.0)
        except Exception:
            logging.Handler.handleError(self, record)

    def flush(self, timeout=None):
        self.producer.flush(timeout=timeout)

    def close(self):
        self.acquire()
        try:
            if self.producer:
                self.producer.close()
                logging.Handler.close(self)
        finally:
            self.release()
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!