Python日志劫持子模块日志到另一个文件(Pylons)
我有一个叫做 myapp
的 Pylons 应用程序,我希望从一个子模块 myapp.lib.submodule
中的所有日志信息都写入一个不同的日志文件,而不是同时写入主日志文件。
这是我现在的 ini 文件,这样设置的话,我会在两个日志文件中都看到子模块的消息,分别是 accesslog 和 submodulelog:
...
# 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
你可以使用传播标志来控制子模块的日志记录,这样就可以阻止消息传递给上级的日志记录器,方法如下:
[logger_submodule]
level = INFO
handlers = submodulelog
qualname = myapp.lib.submodule
propagate=0