在版本 3.2.14 的 Django 应用程序中,在 ec2 实例上运行,该实例还具有包含 9 个工作线程的 gunicorn Web 服务器,加上 ngnix 并使用如下所示的日志配置,文件不会轮换.
gunicorn服务的用户是ubuntu,属于组:www-data
可能是什么? Gunicorn 和工人有问题吗?
非常感谢您的回答。
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"simple": {"format": "%(levelname)s %(message)s"},
"verbose": {
"format": "[%(levelname)8s] [%(asctime)s] [%(funcName)30s] %(message)s"
},
"elegant": {
"format": (
"%(asctime)s [%(levelname)-8s] " "(%(module)s.%(funcName)s) %(message)s"
),
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"handlers": {
"console": {
"level": "INFO",
"class": "logging.StreamHandler",
"formatter": "elegant",
},
"app": {
"level": "INFO",
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "elegant",
"filename": os.path.join("logs", "app"),
"when": "D",
"interval": 30,
"encoding": "utf-8",
},
"groups": {
"level": "INFO",
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "elegant",
"filename": os.path.join("logs", "groups"),
"when": "D",
"interval": 30,
"encoding": "utf-8",
},
},
"root": {
"level": "INFO",
"handlers": ["console"],
"formatter": "elegant",
},
"loggers": {
"app": {
"level": "INFO",
"handlers": ["app"],
"propagate": True,
},
"groups": {
"level": "INFO",
"handlers": ["groups"],
"propagate": True,
},
},
}
这是因为gunicorn 使用 2 个或更多进程进行日志记录。
如果你想轮换日志文件,创建一个单独的代码来管理日志文件会更容易。