您可以使用LoggerAdapter,这样就不必在每次记录调用时都传递额外的信息:
import loggingextra = {'app_name':'Super App'}logger = logging.getLogger(__name__)syslog = logging.StreamHandler()formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')syslog.setFormatter(formatter)logger.setLevel(logging.INFO)logger.addHandler(syslog)logger = logging.LoggerAdapter(logger, extra)logger.info('The sky is so blue')日志(类似)
2013-07-09 17:39:33,596 Super App : The sky is so blue
过滤器还可用于添加上下文信息。
import loggingclass AppFilter(logging.Filter): def filter(self, record): record.app_name = 'Super App' return Truelogger = logging.getLogger(__name__)logger.addFilter(AppFilter())syslog = logging.StreamHandler()formatter = logging.Formatter('%(asctime)s %(app_name)s : %(message)s')syslog.setFormatter(formatter)logger.setLevel(logging.INFO)logger.addHandler(syslog)logger.info('The sky is so blue')产生类似的日志记录。



