一:前言
别的up主写的日志模块太难懂了,使得Logging模块“居庙堂之高,处江湖之远”。因此,笔者来写个大白话篇。
二:主体
1.级别
日志分为五个等级:DEBUG、INFO、WARNING、ERROR、CRITICAL
等级 | 描述 |
---|---|
DEBUG | 最详细的,常用于问题诊断 |
INFO | 详细程度仅次于DEBUG,只记录关键节点信息。 |
WARNING | 用于记录某些不期待的事情,此时程序还可以运行的信息。 |
ERROR | 记录出现一个严重问题,导致某些功能不能正常运行的信息。 |
CRITICAL | 记录发生严重错误,导致程序不能继续运行的信息。 |
2.组成
日志分为四大组件:日志器(Logger)、处理器(Handler)、过滤器(Filter)、格式器(Formatter)
备注:处理器就是将日志器创建的日志记录发送到合适的目的输出。另外三个的功能就是字面意思那样,创日志的,过滤日志的,格式化日志的。
3.方法
方法这个看文档吧。每次写代码用到的输出日志,因为场景不一样,写的方法都不一样的。
- https://docs.python.org/3.5/howto/logging.html
- https://docs.python.org/3.5/library/logging.config.html
- https://docs.python.org/3.5/howto/logging-cookbook.html
4.案例
因为我用python写自动化测试的,所以用什么语言,嘿嘿嘿你懂的吧。
# 创建一个日志器logger并设置其日志级别为DEBUG
logger = logging.getLogger('simple_logger')
logger.setLevel(logging.DEBUG)
# 创建一个流处理器handler并设置其日志级别为DEBUG
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
# 创建一个格式器formatter并将其添加到处理器handler
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
# 为日志器logger添加上面创建的处理器handler
logger.addHandler(handler)
# 日志输出
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
运行输出:
2021-10-20 11:30:50,955 - simple_logger - DEBUG - debug message
2021-10-20 11:30:50,955 - simple_logger - INFO - info message
2021-10-20 11:30:50,955 - simple_logger - WARNING - warn message
2021-10-20 11:30:50,955 - simple_logger - ERROR - error message
2021-10-20 11:30:50,955 - simple_logger - CRITICAL - critical message