zoukankan      html  css  js  c++  java
  • Django的logging配置和django-debug-toolbar使用方法

    做开发通常离不开日志,个人通常如下设置django项目的日志:

    BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'standard': {
                'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
                          '[%(levelname)s][%(message)s]'
            },
            'simple': {
                'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
            },
            'collect': {
                'format': '%(message)s'
            }
        },
        'filters': {
            'require_debug_true': {
                '()': 'django.utils.log.RequireDebugTrue',
            },
        },

    # 上面的配置都是通用的,下面handlers中几个能够处理不同的等级的问题
    'handlers': { 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], # 只有在Django debug为True时才在屏幕打印日志 'class': 'logging.StreamHandler', 'formatter': 'simple' }, 'SF': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,根据文件大小自动切 'filename': os.path.join(BASE_LOG_DIR, "xxx_info.log"), # 日志文件 'maxBytes': 1024 * 1024 * 50, # 日志大小 50M 'backupCount': 3, # 备份数为3 xx.log --> xx.log.1 --> xx.log.2 --> xx.log.3 'formatter': 'standard', 'encoding': 'utf-8', }, 'TF': { 'level': 'INFO', 'class': 'logging.handlers.TimedRotatingFileHandler', # 保存到文件,根据时间自动切 'filename': os.path.join(BASE_LOG_DIR, "xxx_info.log"), # 日志文件 'backupCount': 3, # 备份数为3 xx.log --> xx.log.2018-08-23_00-00-00 --> xx.log.2018-08-24_00-00-00 --> ... 'when': 'D', # 每天一切, 可选值有S/秒 M/分 H/小时 D/天 W0-W6/周(0=周一) midnight/如果没指定时间就默认在午夜 'formatter': 'standard', 'encoding': 'utf-8', }, 'error': { 'level': 'ERROR', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切 'filename': os.path.join(BASE_LOG_DIR, "xxx_err.log"), # 日志文件 'maxBytes': 1024 * 1024 * 5, # 日志大小 50M 'backupCount': 5, 'formatter': 'standard', 'encoding': 'utf-8', }, 'collect': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切 'filename': os.path.join(BASE_LOG_DIR, "xxx_collect.log"), 'maxBytes': 1024 * 1024 * 50, # 日志大小 50M 'backupCount': 5, 'formatter': 'collect', 'encoding': "utf-8" } },

    # 下面是视图文件中真正要引入的日志
    'loggers': { '': { # 默认的logger应用如下配置 'handlers': ['SF', 'console', 'error'], # 选择上面哪一种或者几种处理日志的方法,上线之后可以把'console'移除 'level': 'DEBUG', 'propagate': True, }, 'collect': { # 名为 'collect'的logger还单独处理,还能并列的多弄几个日志,可以在视图文件中引入不同的日志 'handlers': ['console', 'collect'], 'level': 'INFO', } }, }

     视图文件中引入和使用:

    # 引用日志
    import logging
    
    # 实例化一个日志
    logger = logging.getLogger(__name__)  # 获取一个logger示例
    # logger1 = logging.getLogger("collect")  #或者使用settings中的这个日志
    
    def index(request):
        # 使用日志
        logger.debug("这里好像有点问题!")
        logger.warning("好像参数有点问题")
        logger.error("过不下去了...")
        # 查询所有的文章列表
        article_list = models.Article.objects.all()
        return render(request, "index.html", {"article_list": article_list})

    附:Python logger流示图

     

    django-debug-toolbar

    介绍

    django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息。

    github地址

    文档地址

    安装

    pip3 install django-debug-toolbar

    配置

    1. settings.py中

    将 debug_toolbar 添加到 INSTALL_APPS 中

    INSTALLED_APPS = [
        …
        'debug_toolbar',
    ]

    2. urls.py中

    from django.conf import settings
    from django.conf.urls import include, url
    
    if settings.DEBUG:
        import debug_toolbar
        urlpatterns = [
            url(r'^__debug__/', include(debug_toolbar.urls)),
        ] + urlpatterns

    3. settings.py中

    在中间件中加入DebugToolbarMiddleware

    MIDDLEWARE = [
        # ...
        'debug_toolbar.middleware.DebugToolbarMiddleware',
        # ...
    ]

    4. 如果是本机调试,还在将127.0.0.1加入 INTERNAL_IPS

    在settings.py中加入以下配置项:

    INTERNAL_IPS = [‘127.0.0.1’, ]

    5.  配置jQuery的URL

    django-debug-toolbar 默认使用的是Google的地址,默认配置如下:

    JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'

    国内用不了的话可以在settings.py中配置一下,例如(我这里特意选用了和原作者相同版本的jQuery):

    DEBUG_TOOLBAR_CONFIG = {
        "JQUERY_URL": '//cdn.bootcss.com/jquery/2.2.4/jquery.min.js',
    }

    或者你如果在Django项目中使用了jquery的话就可以直接将这一项置为空,那么django-debug-toolbar 就会使用你项目中用到的jquery:

    DEBUG_TOOLBAR_CONFIG = {
        "JQUERY_URL": '',
    }

    使用

    访问具体路径的时候在页面右侧有各项配置面板,点击即可查看各种调试信息。

    作者:E-QUAL
    出处:https://www.cnblogs.com/liujiajia_me/
    本文版权归作者和博客园共有,不得转载,未经作者同意参考时必须保留此段声明,且在文章页面明显位置给出原文连接。
                                                本文内容参考如下网络文献得来,用于个人学习,如有侵权,请您告知删除修改。
                                                参考链接:https://www.cnblogs.com/linhaifeng/
                                                                 https://www.cnblogs.com/yuanchenqi/
                                                                 https://www.cnblogs.com/Eva-J/
                                                                 https://www.cnblogs.com/jin-xin/
                                                                 https://www.cnblogs.com/liwenzhou/
                                                                 https://www.cnblogs.com/wupeiqi/
  • 相关阅读:
    51nod1260
    51nod1327
    51nod1342
    51nod1479
    LOJ6088
    51nod1634
    51nod1778
    JAVA循环结构学校上机经常遇到的几题 笔记
    B. The Number of Products(Codeforces Round #585 (Div. 2))
    A. Yellow Cards ( Codeforces Round #585 (Div. 2) 思维水题
  • 原文地址:https://www.cnblogs.com/liujiajia_me/p/12616649.html
Copyright © 2011-2022 走看看