gpt4 book ai didi

python - 使用 gunicorn 和 Nginx 部署时,Django 应用程序未在生产日志文件中记录请求信息

转载 作者:行者123 更新时间:2023-12-05 08:04:29 25 4
gpt4 key购买 nike

这是我的 Django 应用程序的日志设置。

LOG_DIR = "logs"
LOG_DIR_PATH = os.path.join(BASE_DIR, LOG_DIR)
if not os.path.exists(LOG_DIR_PATH):
os.mkdir(LOG_DIR_PATH)

LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": "{asctime} {levelname} : {filename} line - {lineno:d} : {message}",
"style": "{",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"filters": {
"require_debug_false": {
"()": "django.utils.log.RequireDebugFalse",
},
"require_debug_true": {
"()": "django.utils.log.RequireDebugTrue",
},
},
"handlers": {
"console": {
"level": "INFO",
"filters": ["require_debug_true"],
"class": "logging.StreamHandler",
"formatter": "verbose",
},
"production": {
"level": "INFO",
"filters": ["require_debug_false"],
"class": "logging.handlers.RotatingFileHandler",
"filename": os.path.join(LOG_DIR_PATH, "production.log"),
"maxBytes": 1024 * 1024 * 5, # 5 MB
"backupCount": 5,
"formatter": "verbose",
},
"development": {
"level": "INFO",
"filters": ["require_debug_true"],
"class": "logging.handlers.RotatingFileHandler",
"filename": os.path.join(LOG_DIR_PATH, "development.log"),
"maxBytes": 1024 * 1024 * 5, # 5 MB
"backupCount": 5,
"formatter": "verbose",
},
"task_handler": {
"level": "INFO",
"class": "logging.handlers.RotatingFileHandler",
"filename": os.path.join(LOG_DIR_PATH, "tasks.log"),
"maxBytes": 1024 * 1024 * 10, # 10 MB
"backupCount": 10,
"formatter": "verbose",
},
},
"loggers": {
"django": {
"handlers": ["console"],
},
"py.warnings": {
"handlers": ["console"],
},
"django.request": {
"handlers": ["console"],
"level": "ERROR",
},
"task_logger": {
"handlers": ["task_handler"],
"level": "INFO",
"propagate": False,
},
},
"root": {
"handlers": ["production", "development"],
"level": "INFO",
"propagate": False,
},
}

因此,我希望它在 development.logproduction.log 中记录所有请求信息。它在开发模式下工作正常,也可以使用 DEBUG=False 和 python manage.py runserver 命令。

但是当我使用 gunicorn 和 Nginx 部署它时,production.log 中没有出现任何请求日志。除请求日志外,其他日志消息出现在 production.log 中。

我期望在 production.log 中记录消息

2021-08-05 11:48:37 INFO : basehttp.py line - 157 : "GET /api/v1/settings/vm/cloud-status/ HTTP/1.1" 200 46
2021-08-05 11:48:38 INFO : basehttp.py line - 157 : "GET /api/v1/settings/p1-vms/get-data-fetching-status/ HTTP/1.1" 200 30
2021-08-05 11:48:40 INFO : basehttp.py line - 157 : "GET /api/v1/settings/p1-vms/get-data-fetching-status/ HTTP/1.1" 200 30
2021-08-05 11:48:41 INFO : basehttp.py line - 157 : "GET /api/v1/settings/p1-vms/get-data-fetching-status/ HTTP/1.1" 200 30
2021-08-05 11:48:42 INFO : basehttp.py line - 157 : "GET /api/v1/settings/vm/cloud-status/ HTTP/1.1" 200 46

任何帮助将不胜感激。提前致谢。

最佳答案

import logging.config


logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'console': {
'format': '%(name)-12s %(levelname)-8s %(message)s'
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'console'
},

},
'loggers': {
'': {
'level': 'DEBUG',
'handlers': ['console']
}
}
})

#试试这个

关于python - 使用 gunicorn 和 Nginx 部署时,Django 应用程序未在生产日志文件中记录请求信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68682160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com