logging 详解第二期:三句话,让 logger 言听计从

发布网友

我来回答

1个回答

热心网友

在日常工作中,你是否曾遇到这样的场景?


A:新项目启动,需要配置一个logger来管理日志,我来搞定!


B:日志格式不理想?mmcv的get_logger功能强大,一步到位。这里有链接:github.com/open-mmlab/m...,试试看。


A:哇,真是太方便了!只需设定三个关键参数:日志等级、格式控制器和日志处理器,就能让logger随心所欲地工作。


日志等级的设定

logging模块中的日志等级包括:Logger和Handler的level属性,决定了日志的输出。比如,root logger的默认等级是WARNING,只有ERROR或更高级别的消息才会被记录。在第一期中,我们曾提到root logger虽不直接输出,但在没有配置Handler时,它会利用内置机制处理WARNING和ERROR级别消息。


Handler的作用

在深入之前,回顾一下第一期的内容:logging通过Handler发送日志,包括StreamHandler和FileHandler。StreamHandler将日志输出到终端,而FileHandler则用于保存日志。


暗箱操作揭秘

未配置Handler时,logger本身无法发送日志,但logging模块会为warning和error级别的消息提供一个默认的StreamHandler。当调用logging.info时,可能会意外地在终端看到日志,因为logging.root可能已经暗中配置了StreamHandler。


而pytorch 1.10的多重日志问题,就是由于DistributedDataParallel模块的logging.info调用导致的,因为此时logging.root多了streamHandler,引发额外的日志输出。


Formatter的教化

配置Formatter就像为logger赋予语言风格,比如添加日志名、时间戳和等级,让日志更具可读性和结构。


总结与实践

理解loglevel、handler和formatter后,你可以尝试自定义简单的logger配置。尽管如此,mmcv的get_logger提供了更全面的配置,值得参考。但记住,logging还有许多细节需要探索,期待下一期的深入讲解。


如果觉得有用,请点赞、收藏和关注,感谢支持~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com