日志
日志
1.导入logging模块
2.简单配置一下logging
3.出现异常的时候(except),向日志内写入错误信息
import logging # filename:文件名 # format:数据的格式化输出,最终写在日志文件的样子 # 时间-名称-级别-模块:错误信息 # datefmt:时间格式 # level:错误的级别权重,当错误的权重大于等于level的时候才会被写入 logging.basicConfig(filename = "hehe", format="%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s", datefmt="%Y-%m-%d %H:%M:%S", level = 10) # 当前配置表示 级别权重 大于等于10就会写入日志文件 logging.critical("我是级别权重50") logging.error("我是级别权重40") logging.warning("我是警告,级别权重30") logging.info("我是基本信息,级别权重20") logging.debug("我是测试,级别权重10") logging.log(23,"我是自定义")
简单做个测试
import logging import traceback logging.basicConfig(filename = "hehe", format="%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s", datefmt="%Y-%m-%d %H:%M:%S", level = 10) # 当前配置表示 级别权重 大于等于10就会写入日志文件 class JackError(Exception): pass for i in range(10): try: if i % 3 == 0: raise FileNotFoundError("文件不存在") elif i % 3 == 1: raise KeyError("key错了") elif i % 3 == 2: raise JackError("JackException") except FileNotFoundError: val = traceback.format_exc() logging.error(val) except KeyError: val = traceback.format_exc() logging.error(val) except JackError: val = traceback.format_exc() logging.error(val) except Exception: val = traceback.format_exc() logging.error(val)
最后,如果你的系统中要把日志分开,比如,一个大项目,有两个子系统,那这两个子系统要分开
记录日志,方便调用,那怎么办呢?注意,用上面的 basicConfig 是搞不定的,我们要借助文件助手
(fileHandler),来帮助我们完成日志的分开记录
import logging # 创建一个操作日志的对象logger(依赖FileHandler) file_handler = logging.FileHandler("hehe","a",encoding = "utf-8") file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %" "(levelname)s - %(module)s:%(message)s")) logger1 = logging.Logger("目标名称",level = logging.ERROR) logger1.addHandler(file_handler) logger1.error("我是A系统") # 再创建一个操作日志的对象logging(依赖FileHandler) file_handler = logging.FileHandler("hehe","a",encoding = "utf-8") file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %" "(levelname)s - %(module)s:%(message)s")) logger2 = logging.Logger("目标名称2",level= logging.ERROR) logger2.addHandler(file_handler) logger2.error("我是B系统")