Python配置日志
使用logging模块生成程序日志文件。
日志级别
logging模块中,日志被分为5个级别,权重如下
| 日志级别 | 权重 | 含义 |
|---|---|---|
| CRITICAL | 50 | 严重,软件已经无法运行 |
| ERROR | 40 | 错误,软件没能执行一些功能或执行某些功能出错 |
| WARNING | 30 | 警告,软件虽然能正常工作但需要引起重视的问题,如磁盘空间低 |
| INFO | 20 | 消息,程序运行时产生的信息 |
| DEBUG | 10 | 调试debug,开发人员调试程序时看的 |
案例
import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warn message')
logging.error('error message')
logging.critical('critical message')
'''
out:
WARNING:root:warn message
ERROR:root:error message
CRITICAL:root:critical message
'''
#只显示出info以上级别的错误,低级别不会输出
#级别排序: CRITICAL > ERROR > WARNING > INFO > DEBUG
案例2
import logging
#在当前目录下产生一个app.log文件,记录INFO及其以上级别的日志
logging.basicConfig(filename='app.log',level=logging.INFO)
#如果设置为NOTSET,则会显示所有级别的日志
logging.basicConfig(filename='app.log',level=logging.NOTSET)
logging.debug('debug message')
logging.info('info message')
logging.warning('warn message')
logging.error('error message')
logging.critical('critical message')
logging模块中三个概念
Logger: 日志记录器,应用程序能直接使用的接口。
Handler: 日志处理器,记录日志存储位置,以及保存时长。
Formatter: 格式化,配置日志的输出格式。
对应关系
一个日志记录器使用一个日志处理器,一个日志处理器使用一个日志格式化。
对于简单的脚本
直接使用basicConfig在代码中配置日志
案例
import logging
logging.basicConfig(
level = logging.DEBUG,filename='app.log',
format='%(asctime)s : %(levelname)s : %(message)s')
logging.debug('debug message')
logging.info('info message')
logging.warning('warn message')
logging.error('error message')
logging.critical('critical message')
#日志文件回保存所有DEBUG级别及以上级别的日志
'''
out:
$ cat app.log
INFO:root:info message
WARNING:root:warn message
ERROR:root:error message
CRITICAL:root:critical message
2020-12-20 21:05:34,637 : DEBUG : debug message
2020-12-20 21:05:34,637 : INFO : info message
2020-12-20 21:05:34,637 : WARNING : warn message
2020-12-20 21:05:34,637 : ERROR : error message
2020-12-20 21:05:34,637 : CRITICAL : critical message
'''
对于复杂的脚本
可以将日志的配置保存到一个配置文件中,在代码中使用fileConfig函数读取配置文件。(PS 书中代码执行有误)
参考博文:点此传送
学习来自:fileConfig函数使用,logging模块讲解,format格式化讲解,《python linux系统管理与自动化运维》 第三章
今天的学习是为了以后的工作更加的轻松!

浙公网安备 33010602011771号