id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,branch,changelog,apichanges,internalchanges 11874,Allowing logger to be extended with different handlers,Ryan J Ollos,Ryan J Ollos,"Adding a `LoggerManager` Component and a `ILoggingHandlerProvider` interface would allow new [https://docs.python.org/2/library/logging.handlers.html handlers] to be added through plugins. It should also be possible to eliminate some redundant definitions of log types in `log.py` and `admin/web_ui.py`, and provide a cleaner definition of log levels. One handler that will be of immediate use is the addition of `MockLoggingHandler` in `test.py`, taken from SO:1049375/121694.",enhancement,closed,normal,1.3.1,general,,normal,fixed,logging,,,,"* `EnvironmentStub` logs to a `MemoryHandler` and a list of `(debug_level, message)` tuples can be retrieved through the `log_messages` property. * `logger_handler_factory` no longer returns the handler as the second return parameter. The handler can be accessed through `Environment.log.handlers[0]`. * Added function `trac.log.shutdown` for cleaning up logger handlers. * Added dictionary `LOG_LEVEL_MAP` in `trac.log` module, for mapping string log levels to integer log levels.",