logging 日志模块
什么是日志?
就像生活中的日记 用于记录什么时间发生了什么事情
为什么要记日志?
就是为了在以后程序出现问题的时候,能通过日志来找到问题的原因
怎么记日志
可以自己实现
当然有功能更强大的logging模块
import logging
# 最基本的用法
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
# logging模块将日志分为了五中级别
# 为什么要分级别? 是为了在后期查看日志时候方便定位
# logging的默认显示级别为WARNING,低于WARNING级别的都不会别显示
# 默认输出位置是终端
# 默认的输出格式 WARNING(级别):root(日志生成器的名字):warning(输出的日志消息)
# 修改默认行为
# 日志模块中的四种角色
1.logger 日志生成器 生成一条日志
2.filter 日志的过滤器 对logger生成的日志进行过滤(需要涉及到面向对象)
3.formatter 处理格式的 设置日志的输出格式
4.handler 处理器 最终负责将日志输出到指定的位置
# 自定义日志生成器
# 可以为生成器指定名字 是因为 可以存在多个生成器
logger = logging.getLogger("logger1")
# 设置日志级别
# logging模块内部使用整数区分级别
# 此处可以直接写对应整数,但是建议写常量
logger.setLevel(logging.WARNING)
# logger.warning("这是一个警告信息")
# 如果你的执行文件不在最外层,那么需要手动将要访问的模块路径加入到sys.path ,以下写法是固定的
import os
# os.path.dirname 获取该路径的上一级路径
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
import sys
sys.path.append(BASE_DIR)
#
# # 获取当前执行文件的完整路径
# print(__file__)
logging模板:
import logging
# 1.获取生成器
logger = logging.getLogger("mylogger")
logger.setLevel(10)
# 2.格式处理器
fmt = logging.Formatter("%(levelname)s %(asctime)s %(message)s")
# 3.创建handler处理器
handler = logging.FileHandler("test2.log","a",encoding="utf-8")
# 可以绑定多个handler
# StreamHandler用于输出到终端
handler2 = logging.StreamHandler()
# 4.将handler与格式处理器绑定
handler.setFormatter(fmt)
handler2.setFormatter(fmt)
# 5.把handler生成器绑定
logger.addHandler(handler)
logger.addHandler(handler2)
name = "bgon"
logger.debug(name)
# logger.info()