1. 定义日志记录器
  2. 可以在setting.py里设置日志记录器
    # 自定义日志输出信息
    LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
    'standard': {
    'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'} #日志格式
    },
    'filters': {
    },
    'handlers': {
    'mail_admins': {
    'level': 'ERROR',
    'class': 'django.utils.log.AdminEmailHandler',
    'include_html': True,
    },
    'default': {
    'level':'DEBUG',
    'class':'logging.handlers.RotatingFileHandler',
    'filename': 'log/all.log', #日志输出文件
    'maxBytes': 1024*1024*5, #文件大小
    'backupCount': 5, #备份份数
    'formatter':'standard', #使用哪种formatters日志格式
    },
    'error': {
    'level':'ERROR',
    'class':'logging.handlers.RotatingFileHandler',
    'filename': 'log/error.log',
    'maxBytes':1024*1024*5,
    'backupCount': 5,
    'formatter':'standard',
    },
    'console':{
    'level': 'DEBUG',
    'class': 'logging.StreamHandler',
    'formatter': 'standard'
    },
    'request_handler': {
    'level':'DEBUG',
    'class':'logging.handlers.RotatingFileHandler',
    'filename': 'log/script.log',
    'maxBytes': 1024*1024*5,
    'backupCount': 5,
    'formatter':'standard',
    },
    'scprits_handler': {
    'level':'DEBUG',
    'class':'logging.handlers.RotatingFileHandler',
    'filename':'log/script.log',
    'maxBytes': 1024*1024*5,
    'backupCount': 5,
    'formatter':'standard',
    }
    },
    'loggers': {
    'django': {
    'handlers': ['default', 'console'],
    'level': 'DEBUG',
    'propagate': False
    },
    'django.request': {
    'handlers': ['request_handler'],
    'level': 'DEBUG',
    'propagate': False,
    },
    'scripts': {
    'handlers': ['scprits_handler'],
    'level': 'INFO',
    'propagate': False
    },
    'blog.views': {
    'handlers': ['default', 'error'],
    'level': 'DEBUG',
    'propagate': True
    },
    }
    }
  3. 在views.py里调用日志记录器
    import logging #调用日志记录器
    from django.shortcuts import render logging = logging.getLogger('blog.views') #调用日志器中的 'blog.views' 函数 # Create your views here.
    def index(request):
    try:
    file = open('sss.txt','r') #打开一个不存在的文件
    except Exception as e:
    logging.error(e) #捕获错误,记录入日志中
    return render(request, 'index.html', locals())

万里长征第二步——django个人博客(第二步 ——日志记录器)的更多相关文章

  1. 万里长征第二步——django个人博客(第三步 —— 设置一些全局变量)

    可以将一些全局变量设置在settingg.py里 #网站的基本信息配置 SITE_NAME = 'John的个人博客' SITE_DESC = '专注学习Python开发,欢迎和大家交流' WEIBO ...

  2. 万里长征第二步——django个人博客(第一步 ——创建主页)

    运行命令行工具,输入:pip install virtualenv  --安装virtualenv库. virtualenv blog_project_venv ——使用virtualenv创建一个虚 ...

  3. 万里长征第二步——django个人博客(第七步 ——上传文件)

    在项目目录下新建一个 ‘uploads’文件夹以保存上传的文件 配置setting.py文件 MEDIA_URL = '/uploads/' MEDIA_ROOT = os.path.join(BAS ...

  4. 万里长征第二步——django个人博客(第五步 ——配置后台admin)

    在urls.py文件中配置admin路径 from django.conf.urls import url from django.contrib import admin from blog.vie ...

  5. 万里长征第二步——django个人博客(第四步 ——创建数据库)

    在models.py内设置数据库模型 # -*- coding=utf-8 -*- from __future__ import unicode_literals from django.db imp ...

  6. 万里长征第二步——django个人博客(第六步 ——添加富文本编辑器)

    下载kindeditor 在admin.py文件中配置链接 class Media: js = ( '/static/js/kindeditor-4.1.10/kindeditor-min.js', ...

  7. django 简易博客开发 3 静态文件、from 应用与自定义

    首先还是贴一下源代码地址  https://github.com/goodspeedcheng/sblog 上一篇博客我们介绍了 django 如何在views中使用templates以及一些常用的数 ...

  8. Django搭建博客网站(四)

    Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...

  9. Django搭建博客网站(三)

    Django搭建博客网站(三) 第三篇主要记录view层的逻辑和template. Django搭建博客网站(一) Django搭建博客网站(二) 结构 网站结构决定我要实现什么view. 我主要要用 ...

随机推荐

  1. django渲染模板时跟vue使用的{{ }}冲突解决方法

    var vm = new Vue({ el: '#app', // 分割符: 修改vue中显示数据的语法, 防止与django冲突 delimiters: ['[[', ']]'], data: { ...

  2. django “如何”系列10:如何管理静态文件

    django开发者最关心的是web应用中的动态部分-视图函数和模板.但是明显,web应用还有其他需要注意的部分:静态文件(图片,css,javascript等等),那些都是渲染一个完整的页面需要的东西 ...

  3. WP的SEO工具汇总

    Baidu Sitemap Generator  百度站点地图生成工具 https://wordpress.org/plugins/baidu-sitemap-generator/ This pulg ...

  4. Jmeter-----随机生成手机号后8位并去重,来进行注册手机号的压测

    要求:对注册接口进行100000次压测,手机号已126开头,后面的8位数不限 前言:在进行测试中,我们需要对注册接口进行压测100000次,那么就要求手机号码每次填写的不一致,否则手机号使用一次后会出 ...

  5. webpy 模版语言

    webpy框架拥有自己的模版语言Templetor Templetor具有Python的语言风格 可以直接嵌入Python代码 $code: videoIn = post.filename and p ...

  6. AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203

    [HNOI2010]BOUNCE 弹飞绵羊 思路: SBlct: 代码: #include <bits/stdc++.h> using namespace std; #define max ...

  7. Qt精简编译方法总结

    原文请看:http://blog.csdn.net/loaden/article/details/6061702 Qt如果采取默认编译安装,一般都要占用上G的空间.当初自己不想涉及Qt的一个原因,就是 ...

  8. python 重新执行循环中出错的那一次

    # coding: utf-8 li = [1,2,3,4,5] for num in li: while True: try: # do something except some error: c ...

  9. SyntaxError: Non-ASCII character '\xe7' in file 9.py on line 13, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

    解决方法: #!/usr/bin/python #-*-coding:utf-8-*-

  10. 区间DP(区间最优解)题目讲解总结

    1:给出一个括号字符串,问这个字符串中符合规则的最长子串的长度. [分析]区间DP要覆盖整个区间,那么要求所有情况的并集. 先想出状态方程: dp[i][j]:i ~ j区间内最大匹配数目 输出:dp ...