如何在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批量导出导入MySQL用户的方法
Nov 15 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
Python多线程扫描端口代码示例
Feb 09 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
Python3数据库操作包pymysql的操作方法
Jul 16 Python
python实现桌面壁纸切换功能
Jan 21 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
基于python 取余问题(%)详解
Jun 03 Python
python实现会员管理系统
Mar 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
drupal 代码实现URL重写
2011/05/04 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python实现Decorator模式实例代码
2018/02/09 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
python 二维数组90度旋转的方法
2019/01/28 Python
python多线程下信号处理程序示例
2019/05/31 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
Python如何给函数库增加日志功能
2020/08/04 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
年会活动策划方案
2014/01/23 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
孙振耀退休感言
2015/08/01 职场文书
房屋买卖定金协议书
2016/03/21 职场文书