web自动化05-日志收集
1. 日志
概念:日志就是用于记录系统运行时的信息,对一个事件的记录;也称为Log。
1.1 日志的作用
- 调试程序
- 了解系统程序运行的情况,是否正常
- 系统程序运行故障分析与问题定位
- 用来做用户行为分析和数据统计
1.2 日志级别
思考:是否系统记录的所有日志信息的重要性都一样?
日志级别:是指日志信息的优先级、重要性或者严重程度
常见的日志级别

说明
- 上面列表中的日志级别是从上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR <CRITICAL;
- 当为程序指定一个日志级别后,程序会记录所有日志级别大于或等于指定日志级别的日志信息,而不是仅仅记录指定级别的日志信息;
- 一般建议只使用DEBUG、INFO、WARNING、ERROR这四个级别
日志的基本用法
-
import logging logging.debug("xxx") logging.info("xxxx")
-
如何设置日志级别?
logging.basicConfig(level=logging.INFO)
-
如何设置日志格式?
logging.basicConfig(format="xxxxxxx")
如何将日志信息输出到文件中?
logging.basicConfig(filename="a.log")
-
logging日志模块的四大组件?
-
日志器
-
处理器
-
格式化器
-
过滤器
-
-
logging记录日志的实现步骤?
-
导包
import logging.handlers
-
创建日志器
logger = logging.getLogger()
-
创建处理器对象
logging.StreamHandler logging.FileHandler logging.handlers.TimedRotatingFileHandler
-
创建格式化器对象
formatter = logging.Formatter(fmt)
-
把格式化器添加到处理器中
handlers.setFormatter(formatter)
-
把处理器添加到日志器中
logger.addHandler(handler)
-
打印不同级别的日志
logger.info("xxx") logging.error("xxx")
-
-
如何每日生成一个日志文件?
fh = logging.handlers.TimedRotatingFileHandler(filename, when="H", interval=2, backupCount=3, encoding="UTF-8")
# 将日志信息同时输出到控制台和文件中
# 将日志信息同时输出到控制台和文件中 # 导包 import logging # 创建日志器对象 logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 创建控制台处理器 sh = logging.StreamHandler() sh.setLevel(logging.INFO) # 创建文件处理器 fh = logging.FileHandler("b.log", encoding="UTF-8") fh.setLevel(logging.ERROR) # 创建格式化器 fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s' formatter = logging.Formatter(fmt=fmt) # 把格式化器添加到处理器中 sh.setFormatter(formatter) fh.setFormatter(formatter) # 把处理器添加到日志器 logger.addHandler(sh) logger.addHandler(fh) # 打印不同级别的日志 logger.info("info") logging.warning("warn") logger.error("error")
每日生成一个日志文件
# 每日生成一个日志文件 # 导包 import logging.handlers import time # 创建日志器对象 logger = logging.getLogger() # 创建处理器对象 sh = logging.StreamHandler() fh = logging.handlers.TimedRotatingFileHandler("c.log", when="M", interval=1, backupCount=3, encoding="UTF-8") # 创建格式化器对象 fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s' formatter = logging.Formatter(fmt=fmt) # 把格式化器添加到处理器中 sh.setFormatter(formatter) fh.setFormatter(formatter) # 把处理器添加到日志器中 logger.addHandler(sh) logger.addHandler(fh) # 打印日志 while True: logger.info("info") logger.error("error") time.sleep(1)