Вырубка пирамиды

У меня есть приложение-пирамида, и я хочу, чтобы журналы попали в stderr и stdout. stdout должен быть уровня «ИНФОРМАЦИЯ» и ниже. stderr должен быть "WARN" и выше. Как мне для этого изменить свой файл .ini?

В настоящее время я веду такой журнал, считается ли это правильным?

log = logger.getLogger(__name__)
log.info("update ...")
log.error("MAYDAY MAYDAY... BOOM!!!")

В настоящее время я использую ведение журнала по умолчанию, а именно это.

[loggers]
keys = root, app

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = WARN
handlers = console

[logger_app]
level = WARN
handlers =
qualname = app

[handler_console]
class = StreamHandler
args = (sys.stderr,)                                                                                                                          
85 level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s

person Conceited Code    schedule 02.06.2011    source источник


Ответы (1)


Вы можете добавить несколько обработчиков к корню, разделив их запятыми. Если вы хотите отфильтровать за пределами обычного критерия «принимать только сообщения выше этого уровня ведения журнала» (т.е. только сообщения отладки), вам необходимо использовать что-то вроде фильтра журналирования, чтобы принимать / отклонять записи на основе их конкретных уровней: http://docs.python.org/library/logging.html#filter-objects

Ваш текущий метод ведения журнала с использованием log = logging.getLogger(__name__) является совершенно допустимым и удобным способом организации иерархии ведения журнала.

person Michael Merickel    schedule 03.06.2011