认识日志收集
1.什么是日志?
日志:就是用于记录系统运行时的信息,对一个事件的记录;也称为Log
有哪些信息需要记录?
- 脚本运行过程中某个重要变量的值
- 方法的输入参数和返回结果
- 异常信息
2.为什么要收集日志?
3.日志级别
日志级别设定后,只有比该级别低的日志会写入日志。DEBUG是最详细的级别,CRITICAL最不详细
4.把日志收集到哪里?
控制台:方便自动化测试脚本的调试
日志文件:可以把日志长久的保存起来
Logging日志模块用法
步骤 | 操作 | 代码 |
---|---|---|
1 | 导包 | import logging |
2 | 创建日志器对象 | logger = logging.getLogger() |
3 | 设置日志打印级别 | logger.setLevel(logging.DEBUG) |
4 | 创建处理器对象 | st = logging.StreamHandler() #控制台 fh = logging.handlers.RotatingFileHandler() #文件 |
5 | 创建日志信息格式 | fmt = “%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] – %(message)s” formatter = logging.Formatter(fmt) |
6 | 将日志信息格式设置给处理器 | st.setFormatter(formatter) fh.setFormatter(formatter) |
7 | 给日志器添加处理器 | logger.addHandler(st) logger.addHandler(fh) |
8 | 打印日志 | logging.warning(‘test log sh-26’) #在需要打印日志的地方添加打印语句 |
1.Logger日志器
2.Handler处理器
3.Formatter格式化器
formatter = logging.Formatter(fmt=None)
fmt:指定消息格式化字符串,如果不指定该参数则默认使用message的原始值
占位符 | 描述 |
---|---|
%(name)s | 日志器的名称(日志通道) |
%(levelno)s | 消息的数字日志级别(DEBUG, INFO,WARNING, ERROR, CRITICAL) |
消息的文本日志级别(DEBUG, INFO,WARNING, ERROR, CRITICAL) | |
%(pathname)s | 日志记录所在的源文件的完整路径名 |
路径名的文件名部分 | |
%(module)s | 模块(文件名的名称部分) |
发出日志调用的源行号 | |
函数名 | |
%(created)f | 日志记录创建的时间(time.time ()的返回值) |
日志记录创建的文本时间 | |
%(msecs)d | 创建时间的毫秒部分 |
%(relativeCreated)d | LogRecord创建时间(毫秒),相对于加载日志模块的时间 |
%(thread)d | 线程ID |
%(threadName)s | 线程名 |
%(process)d | 进程ID |
日志信息 |
4.日志打印函数封装
import logging.handlers
import logging
def init_log_config(filename, when='midnight', interval=1, backup_count=7):
# 1. 创建日志器对象
logger = logging.getLogger()
# 2. 设置日志打印级别
logger.setLevel(logging.DEBUG)
# 3. 创建处理器对象
# 控制台对象
st = logging.StreamHandler()
# 日志文件对象(时间分割)
fh = logging.handlers.TimedRotatingFileHandler(filename,when=when,interval=interval,
backupCount=backup_count,encoding='utf-8')
# 4. 日志信息格式
fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
formatter = logging.Formatter(fmt)
# 5. 给处理器设置日志信息格式
st.setFormatter(formatter)
fh.setFormatter(formatter)
# 6. 给日志器添加处理器
logger.addHandler(st)
logger.addHandler(fh)
if __name__ == '__main__':
# 初始化日志
init_log_config('a.log')
# 打印输出日志信息
logging.debug('我是一个调试级别的日志')
5.日志打印
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END