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]: 告警发送完成