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

  我今天来整理了利用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 :用户输出的消息

  """

python错误日志记录工具,解决项目排错问题的更多相关文章

  1. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  2. 将错误日志记录在txt文本里

    引言 对于已经部署的系统一旦出错对于我们开发人员来说是比较痛苦的事情,因为我们不能跟踪到错误信息,不能 很快的定位到我们的错误位置在哪,这时候如果能像开发环境一样记录一些堆栈信息就可以了,这时候我们就 ...

  3. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  4. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  5. PHP错误日志记录:display_errors与log_errors的区别

    我们所做的东西,无论在开发环境还是在生产环境都可能会出现一些问题. 开发环境下,我们会要求错误尽可能详细的呈现出来,错误提示信息越详细越好,越详细越能帮助开发人员确定问题所在并从根本上解决他们. 生产 ...

  6. C# 日志记录工具类--LogHelper.cs测试

    C# 日志记录工具类:(适用于不想使用log4j等第三方的Log工具的时候,希望自己写个简单类实现)LogHelper.cs内容如下: using System; using System.Diagn ...

  7. asp.net Web项目中使用Log4Net进行错误日志记录

      使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能 ...

  8. MySQL学习笔记(一)Ubuntu16.04中MySQL安装配置(5.6优化、错误日志、DNS解决)

    目录 第一部分.5.6安装.配置.自动备份 第二部分.5.7源码安装.配置.自动备份 第一部分.5.6安装 1.安装mysql sudo apt-get install mysql-server su ...

  9. Python的日志记录-logging模块的使用

    一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...

随机推荐

  1. 我的node-webkit笔记

    话不多说,直接上码: index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

  2. 图形化SQL JOIN

  3. SNF-软件开发机器人-免费-火爆登场-程序下载及实战配套教程免费发放

    软件开发机器人不辱使命的完成了在软件开发方面的方式方法,颠覆了传统开发,可零编程开发软件,也可二开更强大功能. 为了更好的了解和理解软件开发机器人我们以模拟用友u8系统部分供应链程序为例进行模拟. 联 ...

  4. avformat_open_input阻塞操作中断的支持

    avformat_open_input默认是阻塞操作,如果不加控制,等待时间可能会达到30s以上,对于有些情况,等待30s的体验是无法接受的. ffmpeg支持interrupt_callback机制 ...

  5. error Microsoft Visual C++ 14.0 is required 解决方案

    Windows平台上,pip install fastFM  scrapy等工具的时候,经常出现 error Microsoft Visual C++ 14.0 is required 的错误,   ...

  6. cps在jenkins构建报错

    修改ares的版本号即可,改为2.0.1.14-20191126-RELEASE

  7. asp.net msbuild 发布

    "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe ...

  8. ios评分功能实现

    /**  * 只能评分,不能编写评论  * 有次数限制,一年只能使用三次  * 使用次数超限后,需要跳转appstore  */ - (IBAction)systemComentBtnAction:( ...

  9. Ubuntu 安装docker CE以及harbor

    Docker CE安装 系统建议版本:Ubuntu 16.04 官方安装文档连接:https://docs.docker.com/install/linux/docker-ce/ubuntu/#pre ...

  10. shell基础知识6-在不按回车键的情况下读入N个字符

    Bash命令 read 能够从键盘或标准输入中读取文本.我们可以使用 read 以交互的形式读取用 户输入,不过 read 能做的可远不止这些.编程语言的大多数输入库都是从键盘读取输入,当回 车键按下 ...