如何在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获取目录下所有文件的方法
Jun 01 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python利用ansible分发处理任务
Aug 04 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
Python中模块string.py详解
Mar 12 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
python 实现提取log文件中的关键句子,并进行统计分析
Dec 24 Python
Python用input输入列表的实例代码
Feb 07 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
CI框架的安全性分析
2016/05/18 PHP
js change,propertychange,input事件小议
2011/12/20 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Python Selenium参数配置方法解析
2020/01/19 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
linux系统都有哪些运行级别
2016/03/26 面试题
中间件分为哪几类
2012/03/14 面试题
反对邪教标语
2014/06/30 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
经理助理岗位职责
2015/02/02 职场文书
手术室护士个人总结
2015/02/13 职场文书
千手观音观后感
2015/06/03 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python