Подмодуль захвата Python регистрирует в другом файле (Pylons) - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть приложение pylons myapp, и мне нужно, чтобы все сообщения журнала из подмодуля myapp.lib.submodule были записаны в другой файл журнала, а не также в основном файле журнала.

Вот мой текущий INI-файл, таким образом я получаю субмодульные сообщения в и файлах доступа и субмодулях:

...
# Logging configuration
[loggers]
keys = root, routes, myapp, sqlalchemy, submodule

[handlers]
keys = console, accesslog, submodulelog

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = accesslog

[logger_routes]
...

[logger_myapp]
level = INFO
handlers = accesslog
qualname = myapp.controllers

[logger_submodule]
level = INFO
handlers = submodulelog
qualname = myapp.lib.submodule

[logger_sqlalchemy]
....

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

[handler_accesslog]
class = handlers.TimedRotatingFileHandler
args = ('/tmp/myapp.log', 'midnight', 1, 30, 'utf-8')
level = INFO
formatter = generic

[handler_submodulelog]
class = handlers.TimedRotatingFileHandler
args = ('/tmp/submodule.log', 'midnight', 1, 30, 'utf-8')
level = INFO
formatter = generic

[formatter_generic]
....

1 Ответ

2 голосов
/ 17 февраля 2011

Вы можете использовать флаг распространения для регистратора субмодулей, чтобы прекратить передачу сообщений регистраторам-предкам, например:

[logger_submodule]                                                                                                                                           
level = INFO                                                                                                                                                 
handlers = submodulelog                                                                                                                                      
qualname = myapp.lib.submodule                                                                                                                               
propagate=0
...