Django 日志配置

Django 项目日志配置

记录业务运行过程中的一些关键信息,方便查看程序运行情况以及排查报错等

详细日志配置

settings.py 配置文件中新增 日志配置

# 设置时区,日志输出时间为 utc-8 时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

# 日志配置
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': './log/access.log',
            'when': 'midnight',  # 每天切割日志
            'interval': 1,  # 切割时间间隔为1天
            'backupCount': 7,  # 保留7天日志
            'formatter': 'custom',
        },
    },
    'formatters': {
        'custom': {
            # 日志输出不够详细,搜索 format 配置后修改下面的配置
            'format': '[%(asctime)s] [%(levelname)s]: %(message)s',
        },
    },
    'loggers': {
        'app': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

文件中调用

import logging

# 获取日志器对象
logger = logging.getLogger('app')

def xxx(request):
    logger.info("Test 数据")

添加中间件,日志记录接口请求 url 信息

  • middleware.py 文件
import logging


class RequestLoggingMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        self.logger = logging.getLogger('app')  # 替换为实际的日志器名称

    def __call__(self, request):
        self.logger.info(f'[{request.method}] {request.path} {request.META["SERVER_PROTOCOL"]}')
        response = self.get_response(request)
        return response

  • setting.py 文件注册中间件
MIDDLEWARE = [
    ......
    'app.middleware.RequestLoggingMiddleware',
]

日志实例

[2023-06-17 10:53:21,470] [INFO]: [POST] /api/alert HTTP/1.1
[2023-06-17 10:53:21,471] [INFO]: <QueryDict: {'domain': ['cat'], 'email': ['企业微信机器人'], 'title': ['[CAT Transaction告警] [项目: cat] [监控项: URL-All-count]'], 'content': ['[CAT Transaction告警: cat URL All] : [实际值:164 ] [最大阈值: 100 ][告警时间:2023-06-17 10:53:21]\n[时间: 2023-06-17 10:53] \n\n\n[告警间隔时间]5分钟'], 'type': ['Transaction']}>
[2023-06-17 10:53:21,471] [INFO]: 
# Cat监控告警信息
> <font color="warning">告警类型</font>:CAT Transaction告警
> <font color="warning">告警项目</font>:cat
> <font color="warning">监控项目</font>:URL-All-count
> <font color="warning">告警内容</font>:最大阈值: 100, 实际值: 164
> <font color="warning">告警时间</font>:2023-06-17 10:53:21
> <font color="warning">告警间隔时间</font>:5分钟
[2023-06-17 10:53:21,808] [INFO]: 告警发送完成
posted @ 2023-06-21 14:49  evescn  阅读(145)  评论(0编辑  收藏  举报