170 похожих чатов

Добавил хэндлеры таким образом: logging.basicConfig(handlers=handlers, level=level) Для того чтобы в необходимых местах

проекта инициализировать логгер так и при этом работали хэндлеры:
log = logging.getLogger(__name__)

Всё бы ничего, но некоторые сообщения мне нужно писать только в файл, соответственно для одного логгера надо дропнуть стримхэндлер... Когда я пытаюсь получить существующие хэндлеры у нового логгера я получаю НИЧЕГО:
log = logging.getLogger(__name__)
print(log.handlers)

Может я выбрал неправильный подход и не стоит аттачить хэндлеры в basicConfig? PS: пичарм на это даже ругается... Или есть способ создать логгер, который будет писать только в файл?

18 ответов

19 просмотров

либо разные логеры нужно использоваться, либо разные уровни сообщений (WARNING, INFO, ERROR, …)

twisted.sonnet- Автор вопроса
Ruslan Gilfanov
либо разные логеры нужно использоваться, либо разн...

а есть возможность при текущих настройках инициализировать логгер и дропнуть из него все хендлеры?

twisted.sonnet
а есть возможность при текущих настройках инициали...

В логгерах и хендлерах можно определять фильтры Вот тебе пример из исходников джанги https://github.com/django/django/blob/b996424199cca58f64b77faeaa367b7e7efb9776/django/utils/log.py#L137-L159

twisted.sonnet- Автор вопроса
Alex
В логгерах и хендлерах можно определять фильтры Во...

я сейчас рехнусь) сделал разные логеры, один из них без стримхэндлера(чтобы только в файл писать) и он всё равно пишет в консоль(правда не сразу, а после конфигурации пайтеста и его плагинов)

twisted.sonnet- Автор вопроса
Alex
закинь конфиг на пасту, посмотрю.

оно работает так как мне надо, только на уровне этого модуля https://pastebin.com/uVSJtS6s

twisted.sonnet- Автор вопроса
twisted.sonnet
оно работает так как мне надо, только на уровне эт...

но при использовании в сессии пайтеста - логгер с флагом to_file_only будет в консоли один хер

twisted.sonnet
оно работает так как мне надо, только на уровне эт...

Хэндлеры должны добавлять один раз, иначе будет дичь

twisted.sonnet
оно работает так как мне надо, только на уровне эт...

ты перемудрил. Можно было просто диктконфигом все описать.

twisted.sonnet- Автор вопроса
twisted.sonnet- Автор вопроса
Alex
ты перемудрил. Можно было просто диктконфигом все ...

ну хз.. может быть.. но я не пойму почему оно не работает с пайтестом блять, у меня уже очко аж горит)

twisted.sonnet- Автор вопроса
Alex
https://gist.github.com/Alkalit/9f2cffec1e01dd99bb...

мне нужно два инстанса логгера, один пишет только в файл, другой файл+консоль при одинаковоых уровнял логгирования

twisted.sonnet
мне нужно два инстанса логгера, один пишет только ...

а по какому условию? Ты сам как их разграничиваешь?

twisted.sonnet- Автор вопроса
Tishka17
Странная дичь

Я могу объяснить зачем: пишу своё консольное оформление для pytest отключая его родное. Работает при передаче аргумента во время запуска сессии. Оформление содержит сепараторы, которые делаются логгированием(именно их не надо выводить в консоль если мой интерфейс не включён). Если я это не реализую - при стандартном консольном оформлении pytest будут ещё и мои сепараторы, соответственно будет бардак

twisted.sonnet
Я могу объяснить зачем: пишу своё консольное оформ...

че-то мне это не нравится. Грю, напиши фильтр который будет реагировать на твое оформление. Мне кажется тебе надо просто форматтирование логгера пайтеста переопределить, но хз.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта