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

  我今天来整理了利用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. aardio类的例子

    论坛里面相关资料太少,这里贴一下 库需要在工程的lib目录下,在ide里面就是用户库目录,比如 my_lib namespace my_lib{ import console class MyLibC ...

  2. angular的路由例子

    app.routing.module.ts里面,关键部分 const routes: Routes = [ { path: '', redirectTo : 'c3/c2/mmc', pathMatc ...

  3. SDN实验---Ryu的源码分析

    一:安装Pycharm https://www.cnblogs.com/huozf/p/9304396.html(有可取之处) https://www.jetbrains.com/idea/buy/# ...

  4. 在Windows平台下使用Gitblit搭建Git服务器图文解说

    Windows平台下Git服务器搭建 一.java环境变量的设置 下载jdk并配置jdk的环境变量,JAVA_HOME,CLASSPATH以及PATH,最后在DOS窗口输入java -version检 ...

  5. MySQL高效分页-mybatis插件PageHelper改进

    MySQL分页在表比较大的时候,分页就会出现性能问题,MySQL的分页逻辑如下:比如select * from user limit 100000,10 它是先执行select * from user ...

  6. JEECG实现模糊查询

    1.JEECG默认不带模糊查询的,但实际开发中会经常用到模糊查询,因此要适当修改(在相应的查询处). @RequestMapping(params = "datagrid") pu ...

  7. odoo controller 继承

    方式一: 继承基类,直接重写方法 from odoo.addons.web.controllers.main import Export class PsExport(Export): @http.r ...

  8. (CSDN 迁移) JAVA多线程实现-支持定时与周期性任务的线程池(newScheduledThreadPool)

    前几篇文章中分别介绍了 单线程化线程池(newSingleThreadExecutor) 可控最大并发数线程池(newFixedThreadPool) 可回收缓存线程池(newCachedThread ...

  9. Activiti Service介绍

    原文地址:https://www.cnblogs.com/lyh421/p/6419518.html 第一章 认识Activiti 内容概览:讲解activiti的特点.接口概览.架构等基本信息. 1 ...

  10. [原创]K8Cscan for Python 2.0

    0x000 简介 K8Cscan扫描器Python版支持Windows和Linux系统 详情参考:https://www.cnblogs.com/k8gege/p/10519321.html 0x00 ...