• python错误日志记录工具,解决项目排错问题


      我们写项目的时候难免会遇到代码报错的问题,遇到这样的问题了如何快速的定位问题并解决问题呢?

      我今天来整理了利用python只带的工具来解决这个问题,我能需要使用的库有:

      logging

      os

      这些都是python标准库。

      具体如何操作呢?

      看我们的代码

      import logging

      import os

      import logging.handlers

      # 1.创建1个logger对象:

      lg = logging.getLogger("Error")

      def init_log():

      """

      初始化一个存放日志位置的地方

      """

      log_path = os.getcwd() + "/var/log"

      try:

      if not os.path.exists(log_path):

      os.makedirs(log_path)

      except:

      print("创建日志目录失败")

      exit(1)

      if len(lg.handlers) == 0: # 避免重复

      # 2.创建handler(负责输出,输出到屏幕streamhandler,输出到文件filehandler)

      filename = os.path.join(log_path, 'project.log')

      fh = logging.FileHandler(filename,mode="a",encoding="utf-8")#默认mode 为a模式,默认编码方式为utf-8

      sh = logging.StreamHandler()

      # 3.创建formatter:

      formatter=logging.Formatter(fmt='%(asctime)s - %(levelname)s - Model:%(filename)s - Fun:%(funcName)s - Message:%(message)s - Line:%(lineno)d')

      # 4.绑定关系:①logger绑定handler

      lg.addHandler(fh)

      lg.addHandler(sh)

      # # ②为handler绑定formatter

      fh.setFormatter(formatter)

      sh.setFormatter(formatter)

      # # 5.设置日志级别(日志级别两层关卡必须都通过,日志才能正常记录)

      lg.setLevel(40)

      fh.setLevel(40)

      sh.setLevel(40)

      这样处理完成后在我们启动项目的时候给他创建一个日志对象就可以利用python 的

      try: 无锡人流医院哪家好 http://www.csjlwtrl.com/

      pass

      except Exception as e:

      lg.error(e)

      语法来捕获异常并且记录我们项目中出现错误的地方到我们上面的定义的project.log的日志文件了。这样做是不是超级方便。

      记录的结果展示如下:

      2019-06-14 14:13:29,519 - ERROR - Model:views.py - Fun:login - Message:'bool' object has no attribute 'service' - Line:49

      记录日志的参数说明如下:

      """

      %(name)s:Logger的名字

      %(levelno)s:数字形式的日志级别

      %(levelname)s:文本形式的日志级别

      %(pathname)s:调用日志输出函数的模块的完整路径名,可能没有

      %(filename)s:调用日志输出函数的模块的文件名

      %(module)s:调用日志输出函数的模块名

      %(funcName)s:调用日志输出函数的函数名

      %(lineno)d:调用日志输出函数的语句所在的代码行

      %(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示

      %(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数

      %(asctime)s:字符串形式的当前时间。默认格式是 “2019-06-14 16:49:45,896”。逗号后面的是毫秒

      %(thread)d:线程ID。可能没有

      %(threadName)s:线程名。可能没有

      %(process)d :进程ID。可能没有

      %(message)s :用户输出的消息

      """

  • 相关阅读:
    如何使用phantomJS来模拟一个HTML元素的鼠标悬停
    nodejs中使用cheerio爬取并解析html网页
    Node.js 动态网页爬取 PhantomJS 使用入门(转)
    一口一口吃掉Hibernate(五)——一对多单向关联映射
    开源 免费 java CMS
    [WinForm]dataGridView导出到EXCEL
    关键帧和动画
    uva 696
    uva 11181
    IE下target获得焦点时存在虚线的问题
  • 原文地址:https://www.cnblogs.com/djw12333/p/11363586.html
Copyright © 2020-2023  润新知