How to modifying the behaviour of the Python logging facility? -


i change way in messages debug , info level displayed when using python's native logging facility. "change", not mean altering format adding logical level. example:

# global variable set @ time of initializing logging. required_verbosity_level = 7  # variable passed each call logger. supplied_verbosity_level = 5 

so when creating logger pass global requirement.

logger = loggerbridge(required_verbosity_level = 7) 

then when call method, pass appropriate level:

logger.debug('this debug message.', supplied_verbosity_level = 5) 

so internally, logic (5<7) , make message visible due fact supplied value meets required one. however, in following case:

logger.debug('this debug message.', supplied_verbosity_level = 11) 

the message will never visible supplied value higher required value. question is: best place implement such behaviour?

right now, tried couple of things based on inheriting current logger class , overriding internal behaviour, known mixin approach:

class loggerbridge(object):     def __init__(self, required_verbosity_level):         self.required_verbosity_level = required_verbosity_level      def _log_bridge(self, logger):         logger(message)      def info(self, message, supplied_verbosity_level):         if supplied_verbosity_level < self.required_verbosity_level:             self._log_bridge(logging.info, message)      def debug(self, message, supplied_verbosity_level):         if supplied_verbosity_level < self.required_verbosity_level:             self._log_bridge(logging.debug, message) 

in theory, seems working. however, right way? there way solve using of built-in logging bits, such custom handler or custom filter?

if want custom debug levels it's supported out of box. set custom debug level (required_verbosity_level in example) on logger using setlevel() , use log() method logging , pass custom level (supplied_verbosity_level in example). if want further customize logic might want override isenabledfor() method.


Comments

Popular posts from this blog

serialization - Convert Any type in scala to Array[Byte] and back -

matplotlib support failed in PyCharm on OSX -

python - Matplotlib: TypeError: 'AxesSubplot' object is not callable -