我创建了一个Gunicorn项目,在配置文件中指定accesslog
和errorlog
,然后服务器启动时仅使用-c
标志来指定此配置文件。
问题是,每次我重新启动相同的Gunicorn进程(通过pkill -F <pidfile, also specified in config>
)时,这些配置中指定的文件都会被清空。我得到的信息是,这是因为Gunicorn打开这些文件的模式是"写",而不是"追加",但在官方设置中没有找到任何相关信息。
我该如何修复它?这很重要,因为我倾向于忘记手动备份这些日志,并且到目前为止没有能力自动备份。
这是我的错误,与Gunicorn本身无关:我有一个脚本可以创建任何不存在但仍然需要的文件,因为它可能会导致应用服务器崩溃:
for file in [pidfile, accesslog, errorlog]:
os.makedirs(os.path.dirname(file), exist_ok=True)
f = open(file, "w")
文件模式w
总是清空文件。创建一个规则,只对pidfile
使用它,而对日志文件使用a
,解决了这个问题。