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系统管理与自动化运维》 第三章

posted @ 2020-12-20 21:47  努力吧阿团  阅读(172)  评论(0)    收藏  举报