Source code for kafka_overwatch.config.logging
# SPDX-License-Identifier: MPL-2.0
# Copyright 2020-2021 John Mille <john@compose-x.io>
from __future__ import annotations
import logging as logthings
import re
import sys
import threading
from copy import deepcopy
[docs]
def thread_id_filter(record):
"""Inject thread_id to log records"""
record.thread_id = threading.get_native_id()
return record
[docs]
class InfoFilter(logthings.Filter):
"""Inspired from https://stackoverflow.com/a/16066513"""
[docs]
def filter(self, rec):
return rec.levelno in (logthings.DEBUG, logthings.INFO)
[docs]
class ErrorFilter(logthings.Filter):
"""Inspired from https://stackoverflow.com/a/16066513"""
[docs]
def filter(self, rec):
return rec.levelno not in (logthings.DEBUG, logthings.INFO)
[docs]
def setup_logging(logger_name: str = "kafka"):
root_logger = logthings.getLogger()
for h in root_logger.handlers:
root_logger.removeHandler(h)
app_logger = logthings.getLogger(logger_name)
for h in app_logger.handlers:
app_logger.removeHandler(h)
stdout_handler = logthings.StreamHandler(sys.stdout)
stdout_handler.setFormatter(MyFormatter())
stdout_handler.setLevel(logthings.INFO)
stdout_handler.addFilter(InfoFilter())
stdout_handler.addFilter(thread_id_filter)
stderr_handler = logthings.StreamHandler(sys.stderr)
stderr_handler.setFormatter(MyFormatter())
stderr_handler.setLevel(logthings.WARNING)
stderr_handler.addFilter(ErrorFilter())
stderr_handler.addFilter(thread_id_filter)
app_logger.addHandler(stdout_handler)
app_logger.addHandler(stderr_handler)
app_logger.setLevel(logthings.DEBUG)
return app_logger
KAFKA_LOG = setup_logging()