log
logging级别
DEBUG : 详细信息,一般用于调试
INFO : 程序正常运行中产生的一些信息
WARNING : 警告用户,虽然程序还在正常工作,但有可能发生错误
ERROR : 由于更严重的问题,程序已经不能执行一些功能了
CRITICAL: 程序发生严重错误,不能正常运行
默认的级别是WARNING,只有在这个级别之上的才会被记录
demo:
import logging
logging.debug('debug的信息')
logging.info('info的信息')
logging.warning('warning的信息')
logging.error('error的信息')
logging.critical('critical的信息')
运行结果如下:
WARNING:root:warning的信息
ERROR:root:error的信息
CRITICAL:root:critical的信息
自定义级别,输出到文件
logging.basicConfig()
自定义级别 level=logging.DEBUG (DEBUG级别以上的记录)
保存到文件 filename=文件路径 #每次执行都会在文件的末尾追加
每次保存到文件后重新记录 filemode='w'
demo:记录info级别以上的日志,保存在log.txt文件中
import logging
import logging
logging.basicConfig(filename='log.txt',level=logging.INFO)
logging.debug('debug的信息')
logging.info('info的信息')
logging.warning('warning的信息')
logging.error('error的信息')
logging.critical('critical的信息')
运行后在当前目录新建一个log.txt文件,然后记录INFO级别以上的日志,如果多次运行,每次都是在该文件的末尾追加日志内容
如果需要在每次运行的时候清空文件内容,basicConfig()参数增加一个 filemode='w'
3.格式化输出
format()
demo: 不想要默认输出的中间那个root用户字段
import logging
logging.basicConfig(format='%(levelname)s:%(message)s',level=logging.INFO)
logging.debug('debug的信息')
logging.info('info的信息')
logging.warning('warning的信息')
logging.error('error的信息')
logging.critical('critical的信息')
输出:
INFO:info的信息
WARNING:warning的信息
ERROR:error的信息
对于%(levelname)s这种东西,是logging模块内置的,可以被输出到日志中的对象(末尾会有更多的相关内容)
记录日志时间
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',level=logging.INFO)
修改上述basicConfig如上
输出:
2020-12-09 16:38:44,285:INFO:info的信息
2020-12-09 16:38:44,288:WARNING:warning的信息
2020-12-09 16:38:44,290:ERROR:error的信息
2020-12-09 16:38:44,292:CRITICAL:critical的信息
格式化日期的输出格式 同 time.strftime() 这里在basicConfig中添加datefmt参数
demo:
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',level=logging.INFO,datefmt='%Y-%m-%D %H:%M:%S')
修改上述basicConfig如上
输出:
2020-12-12/09/20 16:42:55:INFO:info的信息
2020-12-12/09/20 16:42:55:WARNING:warning的信息
2020-12-12/09/20 16:42:55:ERROR:error的信息
2020-12-12/09/20 16:42:55:CRITICAL:critical的信息
关于更多的可以被输出到日志中的对象
属性 | 格式 | 描述 |
---|---|---|
asctime | %(asctime)s | 日志产生的时间,默认格式为2003-07-08 16:49:45,896 |
created | %(created)f | time.time()生成的日志创建时间戳 |
filename | %(filename)s | 生成日志的文件名字 路径 |
funcName | %(funcName)s | 调用日志的函数名 |
levelname | %(levelname)s | 日志级别 ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL') |
levelno | %(levelno)s | 日志级别对应的数值 |
lineno | %(lineno)d | 日志所针对的代码行号(如果可用的话) |
module | %(module)s | 生成日志的模块名 |
msecs | %(msecs)d | 日志生成时间的毫秒部分 |
message | %(message)s | 具体的日志信息 |
name | %(name)s | 日志调用者 |
pathname | %(pathname)s | 生成日志的文件的完整路径 |
process | %(process)d | 生成日志的进程ID(如果可用) |
processName | %(processName)s | 进程名(如果可用) |
thread | %(thread)d | 生成日志的线程ID(如果可用) |
threadName | %(threadName)s | 线程名(如果可用) |