zoukankan      html  css  js  c++  java
  • 日志处理

    首先, 你要知道在编写任何一款软件的时候, 都会出现各种各样的问题或者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
  • 相关阅读:
    最值得你学习的编程语言
    【收藏】程序员的资料库--技术文档、视频教程、电子书
    pig 安装
    MySQL导入.sql文件及常用命令
    win7下使用 EasyBCD 硬盘安装centOS
    Linux系统分区
    Hadoop实战教程视频
    中医药小分子和表观遗传重编程
    OpenSSL
    iOS 判断网络连接状态之重写Reachability
  • 原文地址:https://www.cnblogs.com/Majintao/p/9754860.html
Copyright © 2011-2022 走看看