• 日志处理


    首先, 你要知道在编写任何一款软件的时候, 都会出现各种各样的问题或者bug.这些问题或者bug一般都会在测试的时候给处理掉.但是多多少少的都会出现一些意想不到的异常或者错误.那这个时候, 我们是不知道哪里出了问题的.因为很多BUG都不是必现的bug.如果是必现的.测试的时候肯定能测出来.最头疼的就是这种不必现的bug.我这跑没问题.客户那一用就出问题就出问题.那怎么办呢?我们需要给软件准备一日志系统.当出现任何错误的时候.我们都可以去日志系统里去查.看哪里出了问题.这样在解决问题和bug的时候就多了一个帮手.那如何在python中创建这个日志系统呢? 很简单.
    1.导入logging模块.
    2.简单配置一下logging
    3.出现异常的时候(except).向日志里写错误信息

     1 # filename: 文件名
     2 # format: 数据的格式化输出. 最终在日志文件中的样子
     3 # 时间-名称-级别-模块: 错误信息
     4 # datefmt: 时间的格式
     5 # level: 错误的级别权重, 当错误的级别权重大于等于leval的时候才会写入文件
     6 logging.basicConfig(filename='x1.txt',
     7                     format='%(asctime)s - %(name)s - %(levelname)s -%
     8 (module)s: %(message)s',
     9                     datefmt='%Y-%m-%d %H:%M:%S',
    10                     level=0) # 当前配置表示 10以上的分数会被写入文件
    11 # CRITICAL = 50
    12 # FATAL = CRITICAL
    13 # ERROR = 40
    14 # WARNING = 30
    15 # WARN = WARNING
    16 # INFO = 20
    17 # DEBUG = 10
    18 # NOTSET = 0
    19 logging.critical("我是critical") # 50分. 最贵的
    20 logging.error("我是error") # 40分
    21 logging.warning("我是警告") # 警告 30
    22 logging.info("我是基本信息") # 20
    23 logging.debug("我是调试") # 10
    24 logging.log(2, "我是自定义") # 自定义. 看着给分
    View Code

    简单做个测试,应用一下

     1 class JackError(Exception):
     2     pass
     3 for i in range(10):
     4     try:
     5         if i % 3 == 0:
     6             raise FileNotFoundError("文件不在啊")
     7         elif i % 3 == 1:
     8             raise KeyError("键错了")
     9         elif i % 3 == 2:
    10             raise JackError("杰克Exception")
    11     except FileNotFoundError:
    12         val = traceback.format_exc()
    13         logging.error(val)
    14     except KeyError:
    15         val = traceback.format_exc()
    16         logging.error(val)
    17     except JackError:
    18         val = traceback.format_exc()
    19         logging.error(val)
    20     except Exception:
    21         val = traceback.format_exc()
    22         logging.error(val)
    View Code

    最后, 如果你系统中想要把日志文件分开. 比如. 一个大项目, 有两个子系统, 那两个子系统要分开记录日志. 方便调试. 那怎么办呢? 注意. 用上面的basicConfig是搞不定的. 我们要借助文件助手(FileHandler), 来帮我们完成日志的分开记录

     1 import logging
     2 # 创建一个操作日志的对象logger(依赖FileHandler)
     3 file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8')
     4 file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %
     5 (levelname)s -%(module)s: %(message)s"))
     6 
     7 logger1 = logging.Logger('s1', level=logging.ERROR)
     8 logger1.addHandler(file_handler)
     9 
    10 logger1.error('我是A系统')
    11 # 再创建一个操作日志的对象logger(依赖FileHandler)
    12 file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8')
    13 file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s -
    14 %(levelname)s -%(module)s: %(message)s"))
    15 
    16 logger2 = logging.Logger('s2', level=logging.ERROR)
    17 logger2.addHandler(file_handler2)
    18 
    19 logger2.error('我是B系统')
    View Code
  • 相关阅读:
    HTTP协议
    2018年终总结
    HTML页面全屏/退出全屏
    HTML多图无缝循环翻页效果
    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 错误解决
    Springboot 整合Activiti流程设计器 完成一个简单的请假流程
    阿里云ECS云服务器Linux Tomcat启动慢 访问网页转圈
    Apach Shiro MD5密码加密过程(明文生成密码过程)详细解析
    SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径
    Springboot 结合百度IORC实现自定义模板图片识别
  • 原文地址:https://www.cnblogs.com/Majintao/p/9754860.html
Copyright © 2020-2023  润新知