linuxlizard

custom logging handler

Jun 7th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import sys
  3. import logging
  4. import logging.handlers
  5. from basename import get_basename
  6.  
  7. logger = logging.getLogger("tst")
  8.  
  9. class DaveHandler(logging.StreamHandler):
  10.     def emit(self, record):
  11.         msg = self.format(record)
  12.         print("dave sez {}".format(msg), file=sys.stderr)
  13.  
  14. def main():
  15.     level = logging.DEBUG
  16.  
  17.     # also log to file because lots of stuff to keep track
  18.     logfilename = get_basename(__file__)+".log"
  19.     # formatter that writes iso8601 timestamps
  20.     formatter = logging.Formatter("%(asctime)s:%(levelname)s:%(name)s:%(message)s", "%Y%m%dT%H%M%SZ")
  21.     handler = logging.handlers.WatchedFileHandler(logfilename)
  22.     handler.setLevel(level)
  23.     handler.setFormatter(formatter)
  24.     logger.addHandler(handler)
  25.  
  26.     # davep 20170607 ; tinkering with custom handler
  27.     handler = DaveHandler()
  28.     handler.setLevel(level)
  29.     # use same formatter
  30.     handler.setFormatter(formatter)
  31.     # add to the global logger
  32.     logger.addHandler(handler)
  33.     logger.setLevel(level=level)
  34.  
  35.     logger.debug("debug message")
  36.     logger.info("info message")
  37.     logger.warning("warning message")
  38.     logger.error("error message")
  39.  
  40. if __name__ == '__main__':
  41.     main()
Add Comment
Please, Sign In to add comment