Django中logging的配置和使用

日志级别

Logger 可以配置 日志级别:

级别描述
DEBUG排查故障时使用的低级别系统信息
INFO一般的系统信息
WARNING描述系统发生了一些小问题的信息
ERROR描述系统发生了大问题的信息
CRITICAL描述系统发生严重问题的信息

formatters相关参数

格式描述
%(name)s记录器 logger 的名字
%(levelno)s数据形式的日志记录级别
%(levelname)s文本形式的日志记录级别
%(filename)s执行日志记录调用的源文件的文件名
%(pathname)s执行日志记录调用的源文件的 全路径+文件名
%(funcName)s执行日志记录调用的函数名称
%(module)s调用的模块名称,django是 app 的名称
%(lineno)d记录调用的行号
%(created)s执行日志记录的时间
%(asctime)s日期时间
%(msecs)s毫秒部分
%(thread)s线程ID
%(threadName)s线程名称
%(process)d进程ID
%(message)s记录的消息,自定义内容

setting日志配置

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
            'style': '{',
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
        "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"
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'default'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/debug.log'),
            'class': 'logging.handlers.RotatingFileHandler',  # 滚动生成日志,切割
            'maxBytes': 1024 * 1024 * 10,  # 单个日志文件最大为10M
            'backupCount': 5,  # 日志备份文件最大数量
            'formatter': 'simple', # 简单格式
            'encoding': 'utf-8', # 放置中文乱码
            'formatter': 'default'
        },
        "request": {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/request.log'),
            'formatter': 'default'
        },
        "server": {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/server.log'),
            'formatter': 'default'
        },
        "root": {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/root.log'),
            'formatter': 'default'
        },
 
        "db_backends": {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/db_backends.log'),
            'formatter': 'default'
        },
        "autoreload": {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/autoreload.log'),
            'formatter': 'default'
        }
    },
    'loggers': {
        # 应用中自定义日志记录器
        'mylogger': {
            'level': 'DEBUG',
            'handlers': ['console', 'file'],
            'propagate': True, # 向不向更高级别的logger传递
        },
        "django": {
            "level": "DEBUG",
            "handlers": ["console", "file"],
            'propagate': False,
        },
        "django.request": {
            "level": "DEBUG",
            "handlers": ["request"],
            'propagate': False,
        },
        "django.server": {
            "level": "DEBUG",
            "handlers": ["server"],
            'propagate': False,
        },
        "django.db.backends": {
            "level": "DEBUG",
            "handlers": ["db_backends"],
            'propagate': False,
        },
        "django.utils.autoreload": {
            "level": "INFO",
            "handlers": ["autoreload"],
            'propagate': False,
        }
    },
    'root': {
        "level": "DEBUG",
        "handlers": ["root"],
    }
}

view中使用

import logging
logger = logging.getLogger('mylogger')
logger.error('test log data!')

将日志设置为每天0点更新

'everyDay': {
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': '../logs/dataScreenLog.log',
            'when': 'midnight',
            'interval': 1,
            'backupCount': 30,
            'formatter': 'default',
            'encoding': 'utf-8',
            'atTime': datetime.time(0, 0, 0, 0)
        }

logging官方文档handlers设置部分:https://docs.python.org/zh-cn/3/library/logging.handlers.html#logging.handlers.TimedRotatingFileHandler

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值