проекта инициализировать логгер так и при этом работали хэндлеры:
log = logging.getLogger(__name__)
Всё бы ничего, но некоторые сообщения мне нужно писать только в файл, соответственно для одного логгера надо дропнуть стримхэндлер... Когда я пытаюсь получить существующие хэндлеры у нового логгера я получаю НИЧЕГО:
log = logging.getLogger(__name__)
print(log.handlers)
Может я выбрал неправильный подход и не стоит аттачить хэндлеры в basicConfig? PS: пичарм на это даже ругается... Или есть способ создать логгер, который будет писать только в файл?
либо разные логеры нужно использоваться, либо разные уровни сообщений (WARNING, INFO, ERROR, …)
а есть возможность при текущих настройках инициализировать логгер и дропнуть из него все хендлеры?
В логгерах и хендлерах можно определять фильтры Вот тебе пример из исходников джанги https://github.com/django/django/blob/b996424199cca58f64b77faeaa367b7e7efb9776/django/utils/log.py#L137-L159
я сейчас рехнусь) сделал разные логеры, один из них без стримхэндлера(чтобы только в файл писать) и он всё равно пишет в консоль(правда не сразу, а после конфигурации пайтеста и его плагинов)
закинь конфиг на пасту, посмотрю.
оно работает так как мне надо, только на уровне этого модуля https://pastebin.com/uVSJtS6s
но при использовании в сессии пайтеста - логгер с флагом to_file_only будет в консоли один хер
Хэндлеры должны добавлять один раз, иначе будет дичь
ты перемудрил. Можно было просто диктконфигом все описать.
всмысле? мне разные орггеры нужны
ну хз.. может быть.. но я не пойму почему оно не работает с пайтестом блять, у меня уже очко аж горит)
https://gist.github.com/Alkalit/9f2cffec1e01dd99bb58e8420742e971
мне нужно два инстанса логгера, один пишет только в файл, другой файл+консоль при одинаковоых уровнял логгирования
а по какому условию? Ты сам как их разграничиваешь?
Я могу объяснить зачем: пишу своё консольное оформление для pytest отключая его родное. Работает при передаче аргумента во время запуска сессии. Оформление содержит сепараторы, которые делаются логгированием(именно их не надо выводить в консоль если мой интерфейс не включён). Если я это не реализую - при стандартном консольном оформлении pytest будут ещё и мои сепараторы, соответственно будет бардак
че-то мне это не нравится. Грю, напиши фильтр который будет реагировать на твое оформление. Мне кажется тебе надо просто форматтирование логгера пайтеста переопределить, но хз.
Обсуждают сегодня