Я нашел несколько руководств для создания подкласса Logger, но ни один из них не учитывает влияние, которое это оказывает на интерполяцию имени файла. Есть ли простое решение этой проблемы без необходимости переопределять большие разделы logging.Logger?
Пример кода, определяющего мой собственный регистратор:
Код: Выделить всё
#-------------------------------------
# custom_logger.py
#-------------------------------------
import logging
import io
class CustomLogger(logging.Logger):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setLevel(logging.DEBUG)
# create the record format
formatter = logging.Formatter(fmt = "%(filename)s - %(message)s")
# create the handler
self.stream = io.StringIO()
handler = logging.StreamHandler(self.stream)
handler.setFormatter(formatter)
self.addHandler(handler)
def debug(self, msg, *args, **kwargs):
super().debug(msg, *args, **kwargs)
# do some other stuff
...
Код: Выделить всё
#-------------------------------------
# test.py
#-------------------------------------
from custom_logger import CustomLogger
import logging
logging.setLoggerClass(CustomLogger)
myLog = logging.getLogger("myLog")
myLog.debug("hello world")
print(myLog.stream.getvalue())
Код: Выделить всё
>>> test.py - hello world
Код: Выделить всё
>>> custom_logger.py - hello world
Подробнее здесь: https://stackoverflow.com/questions/789 ... ing-format