组合自定义Python日志处理程序

时间:2013-03-23 16:15:47

标签: python logging twitter python-2.7

我写了一个简短的脚本,定期轮询一个网站,并发布投票结果。

我认为使用python的内置日志记录机制来做到这一点很聪明:

# Main Script
twitter_handler = TwitterHandler(config=args.get('twitter-config'))
logger.addHandler(twitter_handler)

logger.debug('Debug', extra={'tweet': True})

# Handler
class TwitterHandler(logging.Handler):
    def __init__(self, config=None):
        logging.Handler.__init__(self, **kwargs)
        # Do whatever setup is necessary

    def emit(self, record):
        if getattr(record, 'tweet', False):
            # tweet

我还想介绍更复杂的日志处理,如果情况没有改变,只会频繁发推文。

在那一点上,我认为我应该把它分成三种类型的处理程序来解耦它们:

  • TweetHandler:实际发推文消息
  • ConditionalHandler:仅在满足某些条件时记录
  • PeriodicHandler:仅根据某些定期规则进行记录

假设我将功能分解为不同的处理程序,我该如何组合它们?某种元类或类装饰器?

0 个答案:

没有答案