如果删除了日志文件,则uWSGI日志记录无效

MIg*_*ele 9 nginx catalyst uwsgi

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

所以我认为应用程序需要在删除文件后正常重启主进程.我使用这个RESTART脚本:

/home/tester/uwsgi-18
--reload /var/run/uwsgi/my_app_tester/my_app_tester.pid
Run Code Online (Sandbox Code Playgroud)

应用程序重新启动,但日志没有.

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

显然我不希望这种硬停止只是为了旋转日志......

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

/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
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以重新启动应用程序而不会丢失连接和日志记录?

提前谢谢:Migue

rob*_*rto 15

你有各种方法:

1)在logrotate脚本中copytruncate,这将在没有uWSGI帮助的情况下可靠地工作

2)uWSGI日志轮换:--log-maxsize <bytes>当达到特定大小时,将自动旋转日志

3)经典的logrotation +日志重新加载,只需添加--log-master并触发日志重新加载http://uwsgi-docs.readthedocs.org/en/latest/MasterFIFO.html

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