Я использую Logging (import logging
) для регистрации сообщений.
В одном модуле я регистрирую сообщения на уровне отладки my_logger.debug('msg')
;
Некоторые из этих отладочных сообщений приходят от function_a()
, а другие от function_b()
; Я хотел бы иметь возможность включить / отключить ведение журнала в зависимости от того, приходят ли они от a или от b;
Я предполагаю, что мне нужно использовать механизм фильтрации Logging.
Может ли кто-нибудь показать мне, как приведенный ниже код должен был бы быть инструментирован, чтобы делать то, что я хочу?
import logging
logger= logging.getLogger( "module_name" )
def function_a( ... ):
logger.debug( "a message" )
def function_b( ... ):
logger.debug( "another message" )
if __name__ == "__main__":
logging.basicConfig( stream=sys.stderr, level=logging.DEBUG )
#don't want function_a()'s noise -> ....
#somehow filter-out function_a's logging
function_a()
#don't want function_b()'s noise -> ....
#somehow filter-out function_b's logging
function_b()
Если бы я масштабировал этот простой пример до большего количества модулей и большего количества функций на модуль, я бы был обеспокоен большим количеством регистраторов;
Могу ли я сохранить его до 1 регистратора на модуль? Обратите внимание, что сообщения журнала «структурированы», т. Е. Если регистрирующие их функции выполняют некоторую работу по синтаксическому анализу, все они содержат префикс logger.debug("parsing: xxx")
- можно ли как-то одной строкой просто отключить все «синтаксические» сообщения (независимо от модуля / функции, отправляющей сообщение?)