如何在django中添加日志功能


Posted in Python onFebruary 06, 2020

官方文档 猛戳这里

在settings中配置以下代码

#LOGGING_DIR 日志文件存放目录
LOGGING_DIR = "logs" # 日志存放路径
if not os.path.exists(LOGGING_DIR):
 os.mkdir(LOGGING_DIR)
import logging
LOGGING = {
 'version': 1,
 'disable_existing_loggers': False,
 'formatters': { #格式化器
  'standard': {
   'format': '[%(levelname)s][%(asctime)s][%(filename)s][%(funcName)s][%(lineno)d] > %(message)s'
  },
  'simple': {
   'format': '[%(levelname)s]> %(message)s'
  },
 },
 'filters': {
  'require_debug_true': {
   '()': 'django.utils.log.RequireDebugTrue',
  },
 },
 'handlers': {
  'console': {
   'level': 'DEBUG',
   'filters': ['require_debug_true'],
   'class': 'logging.StreamHandler',
   'formatter': 'simple'
  },
  'file_handler': {
    'level': 'INFO',
    'class': 'logging.handlers.TimedRotatingFileHandler',
    'filename': '%s/django.log' % LOGGING_DIR, #具体日志文件的名字
    'formatter':'standard'
  }, # 用于文件输出
  'mail_admins': {
   'level': 'ERROR',
   'class': 'django.utils.log.AdminEmailHandler',
    'formatter':'standard'
  },
 },
 'loggers': { #日志分配到哪个handlers中
  'mydjango': {
   'handlers': ['console','file_handler'],
   'level':'DEBUG', 
   'propagate': True,
  },
  'django.request': {
   'handlers': ['mail_admins'],
   'level': 'ERROR',
   'propagate': False,
  },

####如果要将get,post请求同样写入到日志文件中,则这个触发器的名字必须交django,然后写到handler中
 }
}

在settings中写完配置之后,下面就要具体到相应的视图函数中了。注意:这里我们在实施到具体函数或方法的时候需要手动捕获异常

然后视图函数中

#这里我们模拟一个登陆来写
log = logging.getLogger('mydjango') #这里的mydjango是settings中loggers里面对应的名字

class Login(View):
 def get(self,request):
  return render(request,'login.html')
 def post(self,request):
  user = request.POST.get('username')
  pwd = request.POST.get('password')
  try:
   s = 1/0
  except Exception as e:
   log.error(e)

总结

以上所述是小编给大家介绍的如何在django中添加日志功能,希望对大家有所帮助!

Python 相关文章推荐
Python中的Classes和Metaclasses详解
Apr 02 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
python读取和保存图片5种方法对比
Sep 12 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
Django如何开发简单的查询接口详解
May 17 Python
使用python制作一个解压缩软件
Nov 13 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
python中np是做什么的
Jul 21 Python
python自动计算图像数据集的RGB均值
Jun 18 Python
keras tensorflow 实现在python下多进程运行
Feb 06 #Python
Scrapy框架实现的登录网站操作示例
Feb 06 #Python
Tensorflow 多线程设置方式
Feb 06 #Python
Scrapy框架基本命令与settings.py设置
Feb 06 #Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 #Python
Python输出指定字符串的方法
Feb 06 #Python
python实现简单飞行棋
Feb 06 #Python
You might like
php模板原理讲解
2013/11/13 PHP
十大使用PHP框架的理由
2015/09/26 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
button没写type=button会导致点击时提交
2014/03/06 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
Javascript Objects详解
2014/09/04 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
Python sys.argv用法实例
2015/05/28 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Python模拟三级菜单效果
2017/09/11 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
python中eval与int的区别浅析
2019/08/11 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
药剂专业自荐信范文
2014/04/16 职场文书
材料物理专业求职信
2014/09/01 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
小学运动会加油稿
2015/07/22 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书