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

  我今天来整理了利用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. zookeeper从3.4.8升级到3.4.14

    升级背景说明: 最近在做系统安全扫描时,扫出来zookeeper存在安全漏洞 Apache Zookeeper 缓冲区溢出漏洞(CVE--) 官方给出的升级建议: 地址:https://zookeep ...

  2. 使用leaflet绘制geoJson中国边界

    绘制中国边界 代码如下: function drawChina() { //设置样式 var myStyle = { "color": "#00f", &quo ...

  3. docker批量删除镜像

    docker rmi `docker images | grep swb | grep -v grep | awk '{print $3}'` 参考: https://blog.csdn.net/hi ...

  4. 开发日记:DotNetCore 批处理 发布

    @echo off@title 中医科院 - 发布@echo ******************************************************@echo ========= ...

  5. DL Practice:Cifar 10分类

    Step 1:数据加载和处理 一般使用深度学习框架会经过下面几个流程: 模型定义(包括损失函数的选择)——>数据处理和加载——>训练(可能包括训练过程可视化)——>测试 所以自己写代 ...

  6. 【SSH进阶之路】Hibernate系列——总结篇(九)

    这篇博文是Hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...

  7. python获取https并且写文件日志

    # -*- coding: utf-8 -*- import os import os.path import shutil import chardet import urllib.request ...

  8. haproxy转发真实IP给web

    1.在haproxy.cfg中加入下面参数. option forwardfor               #如果后端服务器需要获得客户端真实ip需要配置的参数,必须要放在listen模块下 2.如 ...

  9. RabbitMQ 从入门到精通 (一)

    目录 1. 初识RabbitMQ 2. AMQP 3.RabbitMQ的极速入门 4. Exchange(交换机)详解 4.1 Direct Exchange 4.2 Topic Exchange 4 ...

  10. 虚拟机CentOS创建/使用快照

    快照 1.什么是快照 说的直白一点,就是创建一个备份.当执行了不可逆的错误操作后,可以通过快照用来恢复系统 2.创建快照的三种模式 挂载状态下创建快照 开机状态下创建快照 关机状态下创建快照 3.如何 ...