发布网友
共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级别消息。
在深入之前,回顾一下第一期的内容: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就像为logger赋予语言风格,比如添加日志名、时间戳和等级,让日志更具可读性和结构。
理解loglevel、handler和formatter后,你可以尝试自定义简单的logger配置。尽管如此,mmcv的get_logger提供了更全面的配置,值得参考。但记住,logging还有许多细节需要探索,期待下一期的深入讲解。
如果觉得有用,请点赞、收藏和关注,感谢支持~