Вы можете либо использовать корневой (по умолчанию) регистратор, и, таким образом, функции уровня модуля logging.debug
, ..., либо использовать свой регистратор в функции, используя его.
Действительно, функция getLogger
является фабричной функцией с реестром (синглтоноподобным), то есть она всегда возвращает один и тот же экземпляр для данного имени регистратора.
Таким образом, вы можете получить свой регистратор в count_parrots, просто используя
logger = logging.getLogger("my logger")
в начале. Тем не менее, соглашение заключается в использовании точечного иерархического имени для вашего регистратора. Смотри http://docs.python.org/library/logging.html#logging.getLogger
EDIT:
Вы можете использовать декоратор для добавления поведения ведения журнала к вашим отдельным функциям, например:
def debug(loggername):
logger = logging.getLogger(loggername)
def log_(enter_message, exit_message=None):
def wrapper(f):
def wrapped(*args, **kargs):
logger.debug(enter_message)
r = f(*args, **kargs)
if exit_message:
logger.debug(exit_message)
return r
return wrapped
return wrapper
return log_
my_debug = debug('my.logger')
@my_debug('enter foo', 'exit foo')
def foo(a, b):
return a+b
Вы можете «жестко закодировать» имя регистратора и удалить закрытие верхнего уровня и my_debug.