在gunicorn上运行的烧瓶应用程序中使用日志旋转时,为什么同时在多个文件上写入日志



我正在gunicorn上运行我的flask web应用程序,并使用RotatingFileHandler进行日志记录。我发现我的应用程序正在访问多个日志文件,包括要记录的备份文件,我可以观察到日志目录中所有文件的大小越来越大。

我不知道为什么会发生这种事
您对这个问题有类似的经历或想法吗?当大小未达到最大大小时,文件会旋转。

number of gunicorn workers = 9
logging_config = dict(
disable_existing_loggers=False,
formatters={
'simple_formatter': {'format': '%(message)s'}
},
handlers={
'file_handler': {
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'simple_formatter',
'filename': 'applog.log',
'maxBytes': 10 * 1024 * 1024,
'backupCount': 10
},
},
root={
'handlers': ['file_handler'],
'level': logging.DEBUG,
}
)

-rw-rw-r-- 1 2.5M Sep 23 11:29 applog.log
-rw-rw-r-- 1 1.9M Sep 23 11:29 applog.log.1
-rw-rw-r-- 1 2.3M Sep 23 11:29 applog.log.2
-rw-rw-r-- 1 5.5M Sep 23 11:29 applog.log.3
-rw-rw-r-- 1 2.0M Sep 23 11:29 applog.log.4
-rw-rw-r-- 1 4.4M Sep 23 11:29 applog.log.5
-rw-rw-r-- 1 2.7M Sep 23 11:29 applog.log.6
-rw-rw-r-- 1 2.6M Sep 23 11:29 applog.log.7
-rw-rw-r-- 1 7.1M Sep 23 11:29 applog.log.8
-rw-rw-r-- 1  10M Sep 23 11:21 applog.log.9

不支持从多个进程写入同一文件,尽管乍一看可能有效。这将是gunicorn的情况。使用日志烹饪书中描述的方法来处理这种情况——只有一个进程应该写入文件。

最新更新