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. docker数据管理--数据卷的备份

    /* 先在宿主机创建一个备份的文 件夹, 然后将其以另外一个名字的目录挂载到容器里, 此时不管容器里,或宿主机里做什么操作, 数据都会及时更新,并得到备份. */ [root@localhost ~] ...

  2. leetcode 之Linked List Cycle(24)

    两个思路,一是用哈希表记录每个结点是还被访问过:二是定义两个快.慢指针,如果存在环的话,两个指针必定会在某位结点相遇. bool linkListNode(ListNode *head) { List ...

  3. linux命令(14):ifup/ifdown/ip addr命令

    开启网卡:ifup eth0 关闭网卡:ifdown eth0 查看网卡接入状态:ip addr[可查看哪块网卡up/down状态]

  4. 小知识-为什么Linux不需要磁盘碎片整理

      转载至:http://beikeit.com/post-495.html 简单译文: 这段linux官方资料主要介绍了外部碎片(external fragmentation).内部碎片(inter ...

  5. Search for a Range——稍微升级版的二分查找

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...

  6. python IDE的配置

    本人使用过的两款,系统环境ubuntukylin 15.04 jupyter 主要参考:ref1 和 ref2 遇到问题: error: [I 21:48:41.947 NotebookApp] Wr ...

  7. 急!急!急!请问win32api参数乱码如何解决!

    我想做一个QQ自动登陆,使用的QQ是2009.现在先模拟打开QQ,然后通过api调用回调函数.回调函数为一个委托方法,但是在方法中整个参数乱码,请问如何解决? 具体流程为,启动QQ,获取当前启动QQ的 ...

  8. hdu多校6

    这个场要恶心死我了.. 1001 积分题,不要四舍五入 //#pragma comment(linker, "/stack:200000000") //#pragma GCC op ...

  9. Windows 上面优秀的工具软件推荐

    Windows 上面优秀的工具软件推荐 一.下载软件 1.速盘 - 度盘神器 简介: 使百度网盘保持全速下载免受限速困扰! 下载: speedpan 2.http下载工具 百度网盘破解下载器:prox ...

  10. ubuntu使用命令更新ubuntu系统

    我们都知道ubuntu是一款linux系统,它不像WINDOWS系统,它是一个开源的系统,它随时都在更新它系统,所以人们都说Linux系统要比WINDOWS系统安全.为了我们电脑安全,我们如何利用ub ...