基于Django实现日志记录报错信息
这篇文章主要介绍了基于Django实现日志记录报错信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
当服务器500错误的时候,普通日志只会记录一行500的request信息,并不会记录详细的报错定位
[ERROR] 2019-06-12 15:07:03,597 "GET /api/v1/test/ HTTP/1.1" 500 74196
需要添加一个在日志中记录详细错误信息的middleware
# -*- coding: UTF-8 -*- import logging logger = logging.getLogger('default') class ExceptionLoggingMiddleware(object): def process_exception(self, request, exception): import traceback logger.error(traceback.format_exc())
将此中间件添加到settings的MIDDLEWARE_CLASSES中
MIDDLEWARE_CLASSES = ( 'utils.my_middleware.ExceptionLoggingMiddleware', )
使用Django logger
'loggers': { 'django': { 'handlers': ['file', 'console'], 'level': 'INFO' },
效果
[ERROR] 2019-06-12 15:07:02,265 Internal Server Error: /api/v1/test/ Traceback (most recent call last): File "E:\tcp_check\venv\lib\site-packages\django\core\handlers\exception.py", line 35, in inner response = get_response(request) File "E:\tcp_check\venv\lib\site-packages\django\core\handlers\base.py", line 128, in _get_response response = self.process_exception_by_middleware(e, request) File "E:\tcp_check\venv\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "E:\tcp_check\tcp_test_app\views.py", line 23, in test a=1/0 ZeroDivisionError: division by zero [ERROR] 2019-06-12 15:07:03,597 "GET /api/v1/test/ HTTP/1.1" 500 74196
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Django日志模块logging的配置详解
前言 Django对于日志输出的信息是很完善的,request的信息,setting配置,trackback的信息,一应俱全,足够我们调试了.但是在线上环境,如果让用户看到这些信息,是很不安全的(暴露代码).所以在线上我们要关闭Debug,但是又不能扔掉这些调试信息,这就要用到logging模块. logging模块其实是Python的模块,在Django中有很多本地化的支持. 理解Logger 首先要理解logging的工作,这里面主要有四个东西:格式器formatter,过滤器filter,
-
django+tornado实现实时查看远程日志的方法
大致思路: 1.利用tornado提供的websocket功能与浏览器建立长连接,读取实时日志并输出到浏览器 2.写一个实时读取日志的脚本,利用saltstack远程执行,并把实时日志发往redis中. 3.tornado读取redis中的信息,发往浏览器. 此过程用到了redis的发布和订阅功能. 先看一下tornado中是如何处理的: import os import sys import tornado.websocket import tornado.web import tornado
-
django利用request id便于定位及给日志加上request_id
简介 在开发大型系统的时候,往往是进行微服务化,变成了多个系统之间的交互.快速迭代你会发现线上的系统很多很复杂,这时候一个用户请求过来会经过很多内部系统,如果这时候发生错误,我们去查看日志的时候,根本不知道,哪个错误来自哪一个用户,这时候我们给每一个请求加上一个Request ID就可以很好的区分了. django-log-request-id 这个项目为我们提供了轮子,直接使用即可 github: https://github.com/dabapps/django-log-request-id
-
Django实现的自定义访问日志模块示例
本文实例讲述了Django实现的自定义访问日志模块.分享给大家供大家参考,具体如下: 在Django默认没有访问日志模块,但是我们可以通过Django的Middleware来实现一个自己的访问日志模块. 首先在Django的工程下创建一个middleware.py文件,内容如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import time class AccessMiddleware(object): def process_request
-
Django实现web端tailf日志文件功能及实例详解
这是Django Channels系列文章的第二篇,以web端实现tailf的案例讲解Channels的具体使用以及跟Celery的结合 通过上一篇 <Django使用Channels实现WebSocket--上篇> 的学习应该对Channels的各种概念有了清晰的认知,可以顺利的将Channels框架集成到自己的Django项目中实现WebSocket了,本篇文章将以一个Channels+Celery实现web端tailf功能的例子更加深入的介绍Channels 先说下我们要实现的目标:所有
-
Django使用uwsgi部署时的配置以及django日志文件的处理方法
首先保证你有一个可运行的django工程 然后在虚拟环境里面安装好uwsgi pip install uwsgi 配置nginx的服务如下 server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; server_name _; location / { try_files $uri $uri/ =404; } location /account { include uwsgi_par
-
Django开发中的日志输出的方法
开发环境:Ubuntu16.04+Django 1.11.9+Python2.7 一:使用自定义函数输出日志到log文件: import time def print_log(log): file_obj = open('/tmp/filename.log', 'a+') log_time = time.strftime( '[%Y-%m-%d %H:%M:%S]', time.localtime( time.time())) # 转化时间格式 file_obj.write("%s\n"
-
基于Django实现日志记录报错信息
这篇文章主要介绍了基于Django实现日志记录报错信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 当服务器500错误的时候,普通日志只会记录一行500的request信息,并不会记录详细的报错定位 [ERROR] 2019-06-12 15:07:03,597 "GET /api/v1/test/ HTTP/1.1" 500 74196 需要添加一个在日志中记录详细错误信息的middleware # -*- coding: UTF
-
基于spring boot 日志(logback)报错的解决方式
记录一次报错解决方法: No converter found capable of converting from type [java.lang.String] to type [java.util.Map<java.lang.String, java.lang.String>] org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'logging.le
-
解决selenium模块利用performance获取network日志请求报错的问题(亲测有效)
目录 报错翻译 报错原因 解决方法 已解决selenium模块利用performance获取network日志请求,抛出异常selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: log type ‘performance’ not found 报错问题 一个小伙伴遇到问题跑来私信我,想用selenium模块利用performance获取network日志请求,但是发生了报错(当时他心里瞬间凉
-
解决nginx报错信息 client intended to send too large body: 1331696 bytes
解决nginx报错信息 client intended to send too large body: 1331696 bytes 1,nginx后台error日志报错 2016/02/05 16:23:56 [error] 12024#0: *441106971 connect() failed (111: Connection refused) while connecting to upstream, client: 113.214.1.10, server: localhost, req
-
解决Django提交表单报错:CSRF token missing or incorrect的问题
1.在Django提交表单时报错:Django提交表单报错: CSRF token missing or incorrect 具体报错页面如下: 2.有道词典翻译后如下: 通常,当存在真正的跨站点请求伪造时,或者Django的CSRF机制没有被正确使用时,就会出现这种情况.至于邮递表格,你须确保: 您的浏览器正在接受cookie. 视图函数将一个请求传递给模板的呈现方法. 在模板中,每个POST表单中都有一个{% csrf_token %}模板标记,目标是一个内部URL. 如果您没有使用Csrf
-
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
日期插件 bootstrap-datetimepicker 在火狐下出现一条报错信息:TypeError: (intermediate value).toString(-).split(-)[1] is undefined 这条错误必然出现,难道没有在 Firefox 下进行测试. 在 Firefox 下查看项目 demo (http://www.malot.fr/bootstrap-datetimepicker/demo.php)可以正常运行,但这个 demo.php 使用的是 2013-3-
-
Ubuntu下开启php调试模式报错信息解决办法
Ubuntu下开启php调试模式报错信息解决办法 在Ubuntu下php的缺省设置是不显示错误信息的,如果程序出错会显示"无法处理此请求的错误提示",这在开发环境下非常不方便. 其实我们只要编辑下apache的配置文件就好 1.我的apache 配置文件目录是/etc/apache2/apache2.conf sudo vim /etc/apache2/apache2.conf 再最后加入以下两行 php_flag display_errors on php_value error_r
-
解决Unixbench安装报错信息的问题
运行环境: Ubuntu 16.04.3 x86_64 在Ubuntu下安装运行Unixbench时,提示报错信息如下 gcc -o ./pgms/ubgears -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall ./src/ubgears.c -lGL -lXext -lX11 /usr/bin/ld: /tmp/ccnTgDEZ.o: undefined reference
-
django model去掉unique_together报错的解决方案
事情是这样的,我有一个存储考试的表 class Exam(models.Model): category = cached_fields.ForeignKeyField(Category) name = models.CharField(max_length=128) date = models.DateField() created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(au
-
React报错信息之Expected an assignment or function call and instead saw an expression
目录 正文从这开始~ 总览 显式返回 隐式返回 返回对象 正文从这开始~ 总览 当我们忘记从函数中返回值时,会产生"Expected an assignment or function call and instead saw an expression"错误.为了解决该错误,确保显式地使用return语句或使用箭头函数隐式返回. 下面有两个示例来展示错误是如何产生的. // App.js const App = props => { const result = ['a', '
随机推荐
- Java进阶学习:jar打包详解
- 使用js显示当前时间示例
- 从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate
- Java数据结构之循环队列简单定义与用法示例
- Swift中用到extension的一些基本的扩展功能讲解
- javascript表格随机排序代码
- PHP json_encode() 函数详解及中文乱码问题
- PHP中的错误处理、异常处理机制分析
- Android通过HTTP协议实现断点续传下载实例
- apache rewrite规则实现白名单
- 用Serv-U架设FTP服务器的方法与设置方法
- C#实现获取IIS站点及虚拟目录信息的方法
- Android Xutils3网络请求的封装详解及实例代码
- C# 实现计算生辰八字
- DOTNETBAR制作圆角窗体和圆角控件代码实例
- Java中的hashcode方法介绍
- java字符串与日期类型转换的工具类
- 详解Vue取消eslint语法限制
- 详解Spring Boot中PATCH上传文件的问题
- Java switch 语句如何使用 String 参数