This module’s purpose is to ensure that CHAPPS modules end up instantiating loggers which all share a common formatter and handler.
It has been reworked a little bit since its inception, and it may approach the issue from two directions, still. It does attempt to be the first thing to get a handler, and thereby be able to set the basic config.
But it also instantiates a logger at the top of the hierarchy,
one named simply
chapps, so that all further CHAPPS loggers
(using the recommended pattern) will be under that parent logger
and inherit its config.
- chapps.logging.DEFAULT_LEVEL = 10
Default minimum severity
- chapps.logging.DEFAULT_FACILITY = 16
Default syslog facility
- class chapps.logging.LogSetup[source]
Establish global log format and handler for CHAPPS
For consistency, logs from different modules should all appear to come from CHAPPS, otherwise it may be quite a headache to make sense of them. The class defines two different formatters, one for debugging and one for general use. There is no fancy method in place for switching between them at present.
The default formatter is very basic, simply prepending “CHAPPS:” and the severity level to the message.
The default minimum severity at present is
The default syslog facility is
It is possible to use rsyslog configuration to send different levels of the
LOCAL0facility to different destinations, or to ignore
DEBUGlevel messages entirely. An example config is included in the project’s ancillary materials.
It had been a conscious decision not to include the
chapps.configmodule in this module, in order to avoid circular dependencies when this module was included everywhere. The rework has the config module loaded as part of package initialization, so it is no longer necessary to load it anywhere, since once it is loaded its job is done.
- debug_formatter = <logging.Formatter object>
A formatter helpful for debugging.
- maillog_formatter = <logging.Formatter object>
The default formatter, anticipated to go to the mail log
- syslog_handler = <SysLogHandler (DEBUG)>
A handler which uses
/dev/logto send messages to syslog
If there are not yet any handlers, this routine calls
logging.basicConfig()to set up basic logging configuration.
If there are already handlers, for instance due to running within
pytest, then nothing happens.
- chapps.logging.logger = <Logger chapps (DEBUG)>
Create a logger in order to configure the top of the hierarchy