Я пытаюсь создать пользовательский Лог инфокодов так:Python, ведение журнала: неправильный путь к файлу при расширении Logger
Файл: logger.py
import logging
class Logger(logging.getLoggerClass()):
def warning(self, msg, *args, **kwargs):
super(Logger, self).warning(msg, *args, **kwargs)
logging.setLoggerClass(Logger)
log = logging.getLogger('test')
handler = logging.StreamHandler()
formatter = logging.Formatter('%(pathname)s')
handler.setFormatter(formatter)
log.addHandler(handler)
Файл: test.py
from logger import log
log.warning('')
Выход:
$ python test.py
/home/dario/Desktop/logging_test/logger.py
Ожидаемый результат будет:
/home/dario/Desktop/logging_test/test.py
Что еще страннее, если я закомментировать setLoggerClass
линию я получаю test.py
, но без полного пути.
Что я делаю неправильно? Спасибо!
Протестировано с помощью Python 2.7.4 и 3.3.1 на Arch Linux x86_64.
Есть ли какая-либо конкретная причина вы должны создать подкласс класса лесоруба? – Aya
Моя цель - форматировать сообщения журнала различными способами в зависимости от их уровня; все работает отлично, за исключением этой вещи, но я все еще проверяю это, потому что я уверен, что в какой-то момент разработки я действительно получал правильный путь. – kynikos
Вероятно, проще использовать [Handlers] (http: // docs. python.org/2/howto/logging.html#handlers). – Aya