zoukankan      html  css  js  c++  java
  • 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 :用户输出的消息

      """

  • 相关阅读:
    黑客悬赏活动第二期 | 百万ELF赏金,aelf跨链转账标准协议CCTP等你挑战!
    2020年aelf首场全民公测,有奖狂欢四重好礼大放送!
    使用aelf最新稳定测试币AEUSD试玩BingoGame Demo,赢取体验奖金!
    开发者大赛 | aelf轻型DApp开发训练大赛结果公布!
    黑客赏金第一期 | aelf跨链转账标准协议准备就绪,88888ELF赏金等你挑战!
    Twitter AMA预告 | aelf 创始人马昊伯将以【aelf治理与发展】为主题进行在线答疑!
    aelf Enterprise 1.0.0 Preview 2 版正式发布!
    aelf技术点解读 | 分红合约接口实现方案
    深入浅出索引--Mysql45讲笔记记录 打卡day3
    一条SQL语句是如何执行的?--Mysql45讲笔记记录 打卡day1
  • 原文地址:https://www.cnblogs.com/djw12333/p/11363586.html
Copyright © 2011-2022 走看看