一.什么是日志
日志:跟踪软件运行时间的方法(跟踪器)
日志作用:调试程序定位问题;数据分析;用户信息跟踪
二.python如何实现日志的收集
1.python内置模块 logging
2.logging模块的基本应用
四大组件:
(1)日志器:logger 给所有应用程序提供入口
(2)处理器:handler 决定在不同端实现输出
(3)格式器:formatter 决定日志内容(包含什么信息(时间,行数,信息描述,日志级别)
(4)过滤器:filter 对信息进行筛选,保留感兴趣的信息
四大组件之间的关系:
一个日志器有多个处理器,一个处理器可以有各自的格式器和过滤器
3.日志级别:
日志级别有哪些,优先级从低到高有哪些(debug 调试信息,info 关键事件描述,warning 警告信息,error错误信息,critical严重错误)
日志输出的级别由日志输出级别和处理器输出级别控制
输出日志级别先按照日志器级别再按照处理器级别实现日志输出
日志输出端:日志文件,控制台
import logging
import time
#创建一个日志器
logger=logging.getLogger("logger")
if not logger.handler:
#日志输出默认Warning以及以上级别
Logger.setLevel(logging.INFO)
#创建一个处理器 控制台实现日志输出 StreamHandler()
sh=logger.StreamHandler()
#创建一个格式器(日志内容:时间 日志级别, 日志描述信息)
formatter1=logging.Formatter(fmt="%(asctime)s | %(filename)s | %(levelname)s | %(message)s,datefmt="%Y/%m/%d %H:%M:%S")
formatter2=logging.Formatter(fmt="%(asctime)s | %(filename)s :%(lineno)s| %(levelname)s | %(message)s,datefmt="%Y/%m/%d %H:%M:%S")
fh=logging.FileHander(filename="{} _log.txt".format(time.strftime("%Y_%m_%d %H_%M_%S"))),encoding="utf-8")
logger.addHandler(sh)
sh.setFormatter(formatter1)
logger.addHandler(fh)
fh.setFormatter(formaterr2)
fh.setLevel(logging.INFO)
try:
1/0
logger.info("计算完成")
except Exception as error:
print(str(error))
logger.error(str(error))