#!/usr/bin/python3 import logging import logging.handlers from config import Config class LevelTagFilter(logging.Filter): "Add leveltag" def filter(self, record): # Extract the first character of the level name record.leveltag = record.levelname[0] # We never actually filter messages out, just abuse filtering to add an # extra field to the LogRecord return True log = logging.getLogger(Config.LOG_NAME) log.setLevel(logging.DEBUG) # stderr stderr = logging.StreamHandler() stderr.setLevel(Config.LOG_LEVEL_STDERR) # syslog syslog = logging.handlers.SysLogHandler(address='/dev/log') syslog.setLevel(Config.LOG_LEVEL_SYSLOG) # Filter filter = LevelTagFilter() syslog.addFilter(filter) stderr.addFilter(filter) # create formatter and add it to the handlers formatter = logging.Formatter('[%(name)s] %(leveltag)s: %(message)s') stderr.setFormatter(formatter) syslog.setFormatter(formatter) # add the handlers to the log log.addHandler(stderr) log.addHandler(syslog) def DEBUG(msg): log.debug(msg) def ERROR(msg): log.error(msg) def INFO(msg): log.info(msg) if __name__ == "__main__": DEBUG("hi debug") ERROR("hi error") INFO("hi info")