day18 日志模块 - logging
""" # filename: 文件名 # format: 数据的格式化输出. 最终在日志文件中的样子 # 时间-名称-级别-模块: 错误信息 # datefmt: 时间的格式 # level: 错误的级别权重, 当错误的级别权重⼤于等于leval的时候才会写入⽂件 logging.basicConfig(filename='x1.txt', format='%(asctime)s - %(name)s - %(levelname)s -% (module)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S',level=10) # 当前配置表示10以上的分数会被写⼊文件 # CRITICAL = 50 # FATAL = CRITICAL # ERROR = 40 # WARNING = 30 # WARN = WARNING # INFO = 20 # DEBUG = 10 # NOTSET = 0 logging.critical("我是critical") # 50分 logging.error("我是error") # 40分 logging.warning("我是警告") # 30 logging.info("我是基本信息") # 20 logging.debug("我是调试") # 10 logging.log(2, "我是自定义") # 自定义,看着给分; 可以设置不同的日志等级,用于控制日志的输出, 日志等级:使用范围 FATAL:致命错误 CRITICAL:特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用 ERROR:发生错误时,如IO操作失败或者连接问题 WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误 INFO:处理请求或者状态变化等日常事务 DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态 """ # 一般会通过文件助手(FileHandler)来记录一个或多个日志 import logging # 创建一个操作⽇志的对象logger(依赖FileHandler) file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8') file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - % (levelname)s -%(module)s: %(message)s")) logger1 = logging.Logger('s1', level=logging.ERROR) logger1.addHandler(file_handler) logger1.error('我是A系统') # 再创建一个操作日志的对象logger(依赖FileHandler) file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8') file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")) logger2 = logging.Logger('s2', level=logging.ERROR) logger2.addHandler(file_handler2) logger2.error('我是B系统') # FileHandler 实例 import logging import traceback class LoggerHelper(object): _i = None @classmethod def instance(cls): if cls._i: return cls._i else: cls._i = LoggerHelper() # LoggerHelper() return cls._i # obj def __init__(self): error_log_file = logging.FileHandler('cdn_refersh_error.log', 'a+', encoding='utf-8') error_log_fmt = logging.Formatter(fmt="%(asctime)s %(name)s %(message)s") error_log_file.setFormatter(error_log_fmt) error_logger = logging.Logger('ERROR', level=logging.ERROR) error_logger.addHandler(error_log_file) self.error_logger = error_logger access_log_file = logging.FileHandler('cdn_refersh_access.log', 'a+', encoding='utf-8') access_log_fmt = logging.Formatter(fmt="%(asctime)s %(name)s %(message)s") access_log_file.setFormatter(access_log_fmt) access_logger = logging.Logger('INFO', level=logging.INFO) access_logger.addHandler(access_log_file) self.access_logger = access_logger log = LoggerHelper.instance() try: print(1 / 0) except Exception as e: log.error_logger.log(logging.ERROR, e) log.error_logger.error(traceback.format_exc()) log.access_logger.log(logging.INFO, e) log.access_logger.info(e)