栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

懒惰的记录器消息字符串评估

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

懒惰的记录器消息字符串评估

日志记录模块已经对您要执行的操作提供了部分支持。做这个:

log.debug("Some message: a=%s b=%s", a, b)

…代替这个:

log.debug("Some message: a=%s b=%s" % (a, b))

日志记录模块足够聪明,不会产生完整的日志消息,除非该消息实际记录在某处。

要将此功能应用于您的特定请求,可以创建一个lazyjoin类。

class lazyjoin:    def __init__(self, s, items):        self.s = s        self.items = items    def __str__(self):        return self.s.join(self.items)

像这样使用它(请注意使用生成器表达式,这会增加延迟):

logger.info('Stupid log message %s', lazyjoin(' ', (str(i) for i in range(20))))

这是展示此作品的演示。

>>> import logging>>> logging.basicConfig(level=logging.INFO)>>> logger = logging.getLogger("log")>>> class DoNotStr:...     def __str__(self):...         raise AssertionError("the pre should not have called this")... >>> logger.info('Message %s', DonotStr())Traceback (most recent call last):...AssertionError: the pre should not have called this>>> logger.debug('Message %s', DonotStr())>>>

在演示中,logger.info()调用遇到了断言错误,而logger.debug()并没有解决。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号