Я следил за советами django docs и использовал журнал, например:
import logging
logger = logging.getLogger(__name__)
def today(...):
logger.info('Sun is shining, the weather is sweet')
С моей текущей конфигурацией вывод выглядит следующим образом:
2016-08-11 14:54:06 mylib.foo.today: INFO Sun is shining, the weather is sweet
К сожалению, некоторые библиотеки, которые я не могу изменить, используют запись таким образом:
import logging
def third_party(...):
logging.info('Make you want to move your dancing feet')
Выход к сожалению выглядит следующим образом:
2016-08-09 08:28:04 root.third_party: INFO Make you want to move your dancing feet
Я хочу увидеть это:
2016-08-09 08:28:04 other_lib.some_file.third_party: INFO Make you want to move your dancing feet
Разница:
root.third_party == > other_lib.some_file.third_party
Я хочу увидеть длинную версию (не root
), если код использует logging.info()
вместо logger.info()
Обновление
Это не дубликат Элегантная настройка ведения журнала Python в Django, поскольку его решение:
Начало цитаты
В каждом модуле я определяю логгер, используя
logger = logging.getLogger(__name__)
Конец цитаты.
Нет, я не буду изменять сторонний код, который использует logging.info()
вместо logger.info()
.
Следующий вопрос
Избегайте logger=logging.getLogger(__name__)
без потери способа фильтрации журналов