Reputation: 12415
I have a pylons app myapp
and I need all log messages from a submodule myapp.lib.submodule
to be written to a different log file and not also in the main log file.
Here's my current ini file, this way I get submodule messages in both accesslog and submodulelog files:
...
# 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]
....
Upvotes: 0
Views: 825
Reputation: 144
You may use propagate flag for submodule logger to stop passing messages to ancestor loggers, like this:
[logger_submodule]
level = INFO
handlers = submodulelog
qualname = myapp.lib.submodule
propagate=0
Upvotes: 2