logging模块的基本使用
1. 日志的级别
日志级别的显示等级:DEBUT < INFO < WARNING < ERROR < CRITICAL
- DEBUG: 调试信息,通常在诊断问题的时候用得着
- INFO: 普通信息,确认程序按照预期运行
- WARNIG: 警告信息,表示发生意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行
- ERROR: 错误信息,程序运行中出现了一些问题,程序某些功能不能执行
- CRITICAL: 危险信息,一个严重的错误,导致程序无法继续运行
2. formatter格式
- %(asctime)s 日志事件发生的时间
- %(levelname)s 该日志记录的日志级别
- %(message)s 日志记录的文本内容
- %(name)s 所使用的日志器名称,默认是 'root'
- %(pathname)s 调用日志记录函数的文件的全路径
- %(filename)s 调用日志记录函数的文件
- %(funcName)s 调用日志记录函数的函数名
- %(lineno)d 调用日志记录函数的代码所在的行号
3. 例子,使用代码实现(python)
import logging
1. 认识日志级别, 及默认级别
logging.basicConfig(level=logging.DEBUG) # 通过logging.basicConfig(), 对level参数进行配置,可以设置最低能够显示的日志级别
a = '调试debug'
logging.debug(a)
b = 'info信息'
logging.info(b)
c = 'warning警告' # 默认能够输出信息的最低等级
logging.warning(c)
d = 'error 出错'
logging.error(d)
e = 'critical危险信息'
logging.critical(e)
# 以上代码的输出信息为: # 所以说默认的最低等级是: warning
"""
WARNING:root:warning警告
ERROR:root:error 出错
CRITICAL:root:critical危险信息"""
# 2. logging.basicConfig() # 对logger进行配置, 只需要配置一次,如果配置了多次,那么只有第一个会生效
logging.basicConfig(
# level 配置最低显示的日志等级
level=logging.INFO,
# format 配置日志的输出格式
format='时间: %(asctime)s, 日志级别: %(levelname)s, 文本内容: %(message)s, 日志器: %(name)s, 文件: %(filename)s, 文件路径: %(pathname)s, 处理函数名: %(funcName)s, 行号: %(lineno)s
',
# filename 把日志信息保存到一个文件中去
filename='mylog.log',
# filemode 以什么模式保存到文件中
filemode='a' # a 追加
)
logging.debug('debug调试')
logging.info('info信息')
logging.warning('warning警告信息')
logging.error('error错误')
logging.critical('critical危险信息')
2. 模块化组件的使用
import logging
# 1. 创建logger对象
logger = logging.getLogger('mylog')
# 2. 创建处理器对象, 输出到什么什么地方
stream_handler = logging.StreamHandler() # 控制台 (控制台处理器对象) # logging.FileHandler('mylog.log') # 文件处理器对象
# stream_handler.setLevel(logging.ERROR) # 设置显示等级, (注意: 最低的显示等级为warning, 即使用设置更低的显示等级也不会起作用, 也只会显示warning及更高的显示等级)
file_handler = logging.FileHandler('mylog.log') # 文件, 输出到mylog.log这个文件中, 文件处理器
# 3. 配置日志的输出格式
formatter = logging.Formatter('时间: %(asctime)s, 日志等级: %(levelname)s, 文本内容: %(message)s, 日志器: %(name)s, 文件名: %(filename)s, 文件路径: %(pathname)s, 处理函数名: %(funcName)s, 行号: %(lineno)d')
# 4. 将处理器对象与日志格式进行绑定, 即设置logger日志的输出格式
stream_handler.setFormatter(formatter)
# 5. 将处理器对象添加(或绑定)到logger对象中去
logger.addHandler(stream_handler)
# 6. 使用
if __name__ == '__main__':
logger.debug('debug调试')
logger.info('info信息')
logger.warning('warning警告信息')
logger.error('error错误')
logger.critical('critical危险信息')