From 420c39b0af83f7458e1ffc5bf180f1809a0f6dee Mon Sep 17 00:00:00 2001 From: Leon Su Date: Sun, 10 Jun 2018 22:59:45 +0800 Subject: [PATCH] Add logging Filter to drop the kafka log msg Add logging Filter to drop the kafka log msg, instead of using 'if' condition in emit function. --- python_kafka_logging/KafkaHandler.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/python_kafka_logging/KafkaHandler.py b/python_kafka_logging/KafkaHandler.py index 4608457..a9116fe 100644 --- a/python_kafka_logging/KafkaHandler.py +++ b/python_kafka_logging/KafkaHandler.py @@ -4,6 +4,13 @@ import logging +class KafkaLoggingFilter(logging.Filter): + + def filter(self, record): + # drop kafka logging to avoid infinite recursion + return not record.name.startswith('kafka'): + + class KafkaLoggingHandler(logging.Handler): def __init__(self, hosts_list, topic, timeout_secs=DEFAULT_SOCKET_TIMEOUT_SECONDS, **kwargs): @@ -17,11 +24,9 @@ def __init__(self, hosts_list, topic, timeout_secs=DEFAULT_SOCKET_TIMEOUT_SECOND self.producer = SimpleProducer(self.kafka_client, **kwargs) else: self.producer = KeyedProducer(self.kafka_client, **kwargs) + self.addFilter(KafkaLoggingFilter()) def emit(self, record): - # drop kafka logging to avoid infinite recursion - if record.name == 'kafka': - return try: # use default formatting msg = self.format(record)