美文网首页
Django日志配置简易版

Django日志配置简易版

作者: 丙吉 | 来源:发表于2022-07-19 14:46 被阅读0次

    之前的都是在测试环境中的,没有加日志,现在想把日志给加上。

    用个简单的,能跑通即可。

    就参考了Django文档中的内容。

    https://docs.djangoproject.com/zh-hans/3.0/topics/logging/
    # 在setting.py文件中输入如下代码
    # logging日志配置
    import os
    LOG_DIR = os.path.join(BASE_DIR, 'logs')
    if not os.path.exists(LOG_DIR):
        os.makedirs(LOG_DIR)
    
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'file': {
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': os.path.join(LOG_DIR, 'debug.log'),
            },
        },
        'loggers': {
            'django': {
                'handlers': ['file'],
                'level': 'DEBUG',
                'propagate': True,
            },
        },
    }
    

    稍复杂些的,记录多项log。

    注意,Logger里面的 handlers 都要有上面对应的项,我之前把两个参考合并至一起,报错,一直找不到,原来就是没有那项。

    参考:https://blog.csdn.net/zhouzhiwengang/article/details/119606262

    import os
    # logging日志配置
    LOG_DIR = os.path.join(BASE_DIR, 'logs')
    if not os.path.exists(LOG_DIR):
        os.makedirs(LOG_DIR)
    
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False, # 表示是否禁用所有的已存在的日志配置
        'formatters': {  # 日志格式
            'default': {
                'format': '%(asctime)s %(name)s  %(pathname)s:%(lineno)d %(module)s:%(funcName)s %(levelname)s- %(message)s',
                'datefmt': '%Y-%m-%d %H:%M:%S'},
            'simple': {
                'format': '{levelname} {message}',
                'style': '{',
                },
        },
        'filters': {  # 过滤器
            'require_debug_false': {
                '()': 'django.utils.log.RequireDebugFalse',
            }
        },
        'handlers': {  # 处理器
            # 'mail_admins': {  # 发送邮件通知管理员
            #     'level': 'ERROR',
            #     'class': 'django.utils.log.AdminEmailHandler',
            #     'filters': ['require_debug_false'],  # 仅当 DEBUG = False 时才发送邮件
            #     'include_html': True,
            # },
            'debug': {  # 记录到日志文件(需要创建对应的目录,否则会出错)
                'level': 'DEBUG',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': os.path.join(LOG_DIR, 'debug.log'),  # 日志输出文件
                'maxBytes': 1024 * 1024 * 5,  # 文件大小
                'backupCount': 5,  # 备份份数
                'formatter': 'default',  # 使用哪种formatters日志格式
            },
            'console': {  # 输出到控制台
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'default',
            },
            'file': {  # 输出到文件
                'level': 'DEBUG',
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'filename': os.path.join(LOG_DIR, 'debug.log'),
                'when': 'D',
                'interval': 1,
                'formatter': 'default',
            },
            'request': {  #
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': os.path.join(LOG_DIR, 'request.log'),
                'formatter': 'default',
            },
            'server': {  #
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': os.path.join(LOG_DIR, 'server.log'),
                'formatter': 'default',
            },
            'root': {  #
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': os.path.join(LOG_DIR, 'root.log'),
                'formatter': 'default',
            },
            'db_backends': {  #
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': os.path.join(LOG_DIR, 'db_backends.log'),
                'formatter': 'default',
            },
            'autoreload': {  #
                'level': 'INFO',
                'class': 'logging.FileHandler',
                'filename': os.path.join(LOG_DIR, 'autoreload.log'),
                'formatter': 'default',
            },
        },
        'loggers': {  # logging管理器
            'mylogger': {
                'handlers': ['console', 'file'],
                'level': 'DEBUG',
                'propagate': True,
            },
            'django': {
                'handlers': ['console', 'file'],
                'level': 'DEBUG',
                'propagate': False
            },
            'django.request': {
                'handlers': ['request'],
                'level': 'ERROR',
                'propagate': False,
            },
            'django.server': {
                'handlers': ['server'],
                'level': 'DEBUG',
                'propagate': False
            },
            'django.db.backends': {
                'handlers': ['db_backends'],
                'level': 'DEBUG',
                'propagate': False
            },
            'django.utils.autoreload': {
                'handlers': ['autoreload'],
                'level': 'INFO',
                'propagate': False
            },
            # 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件
            'django.security.DisallowedHost': {
                'handlers': ['root'],
                'propagate': False,
            },
        },
        'root':{
            'level':'DEBUG',
            'handlers': ['root'],
        },
    }
    
    

    相关文章

      网友评论

          本文标题:Django日志配置简易版

          本文链接:https://www.haomeiwen.com/subject/yvzjirtx.html