赞
踩
常见的Python日志打印方式为使用内置函数print()
或者logging
模块打印日志。
print()
只能将日志打印至控制台,不推荐此方式logging
模块默认将日志打印至控制台,也可以配置打印到指定日志文件,推荐使用此方式logging提供了函数来做日志处理,分别为debug()/info()/warning()/error()/critical()
,对应日志的五个等级DEBUG/INFO/WARNING/ERROR/CRITICAL
。如下表所示。
函数 | 日志等级 | 等级值 | 说明 |
---|---|---|---|
debug() | DEBUG | 10 | 调试模式下的日志,一般是给程序员看的 |
info() | INFO | 20 | 程序正常运行时输出的日志 |
warning() | WARNING | 30 | 警告信息,提示将来可能出现的问题 |
error() | ERROR | 40 | 程序运行过程中出现的错误信息 |
critical() | CRITICAL | 50 | 严重错误,表明软件已罢工 |
设置日志等级后只会打印大于等于当前等级的日志,从logging模块的源码里可见日志等级大小排序如下。
DEBUG等级值最小,因此会打印出所有等级的日志。
logging里的默认等级为WARNING
,也就是说在不设置日志等级的情况下,只有WARNING/ERROR/CRITICAL的日志才会被打印输出。
basicConfig()
函数即可。默认的日志收集器名称为root
,可以在创建日志对象时设置该名称。logging.basicConfig(level=logging.INFO)
# 创建日志对象(不设置时默认名称为root) log = logging.getLogger('test_http') # 设置日志级别(默认为WARNING) log.setLevel('INFO') # 设置输出渠道(以文件方式输出需设置文件路径) file_handler = logging.FileHandler('test.log', encoding='utf-8') file_handler.setLevel('INFO') # 设置输出格式(实例化渠道) fmt_str = '%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s' formatter = logging.Formatter(fmt_str) # 绑定渠道的输出格式 file_handler.setFormatter(formatter) # 绑定渠道到日志收集器 log.addHandler(file_handler) def test_login(): log.info("login start...") if __name__ == '__main__': log.setLevel(logging.ERROR) test_login()
输出至log文件的日志格式如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。