Nginx 如果删除日志文件,则uWSGI日志记录不起作用

Nginx 如果删除日志文件,则uWSGI日志记录不起作用,nginx,uwsgi,catalyst,Nginx,Uwsgi,Catalyst,我的目标是旋转由uWSGI生成的日志,但是当原始日志文件被删除(压缩后)时,它不会被重新创建 因此,我认为在删除文件后,应用程序需要优雅地重新启动主进程。我使用以下重新启动脚本: /home/tester/uwsgi-18 --reload /var/run/uwsgi/my_app_tester/my_app_tester.pid /home/tester/uwsgi-18 --master --daemonize /var/log/uwsgi/my_app_tester/log --soc

我的目标是旋转由uWSGI生成的日志,但是当原始日志文件被删除(压缩后)时,它不会被重新创建

因此,我认为在删除文件后,应用程序需要优雅地重新启动主进程。我使用以下重新启动脚本:

/home/tester/uwsgi-18
--reload /var/run/uwsgi/my_app_tester/my_app_tester.pid
/home/tester/uwsgi-18
--master
--daemonize /var/log/uwsgi/my_app_tester/log
--socket /tmp/uwsgi/my_app_tester/my_app_tester.socket
--processes 1
--psgi /home/tester/my_app/my_app.psgi
--pidfile /var/run/uwsgi/my_app_tester/my_app_tester.pid
--procname-master TESTER
-L
应用程序将重新启动,但日志不会重新启动

为了再次进行日志记录工作,我需要终止-2进程并再次运行启动脚本,以便生成另一个进程号,日志记录再次工作

显然,我不想这样的硬停止只是为了旋转日志

我的应用程序是用Catalyst构建的,服务器运行Nginx,这里是uWSGI启动脚本:

/home/tester/uwsgi-18
--reload /var/run/uwsgi/my_app_tester/my_app_tester.pid
/home/tester/uwsgi-18
--master
--daemonize /var/log/uwsgi/my_app_tester/log
--socket /tmp/uwsgi/my_app_tester/my_app_tester.socket
--processes 1
--psgi /home/tester/my_app/my_app.psgi
--pidfile /var/run/uwsgi/my_app_tester/my_app_tester.pid
--procname-master TESTER
-L
是否有其他方法可以在不丢失连接和日志记录的情况下重新启动应用程序

提前感谢您:
Migue

您有多种方法:

1) 在logrotate脚本中,这将可靠地工作,并且不需要uWSGI的帮助

2) uWSGI日志旋转:
--log maxsize
将在达到特定大小时自动旋转日志

3) 经典的日志旋转+日志重新加载,只需添加
--log master
并使用


还有其他方法(如触摸文件时触发日志重新打开),但前一种方法最常见。

这可能会有所帮助:[[1]:那篇文章是关于文件旋转本身的一个错误,以防没有文件。我的问题是uWSGI不重新创建日志,除非我做了一个完全的硬停止,然后开始选项1和2工作得很好。关于3不确定,但我更喜欢在测试之前阅读它。谢谢!选择选项1,因为
--log maxsize
感觉不太好ss清晰方便。