我的目标是旋转uWSGI生成的日志,但是当原始日志文件被删除(压缩后)时,它不会再次重新创建.
所以我认为应用程序需要在删除文件后正常重启主进程.我使用这个RESTART脚本:
/home/tester/uwsgi-18 --reload /var/run/uwsgi/my_app_tester/my_app_tester.pid
应用程序重新启动,但日志没有.
为了再次进行日志记录工作,我需要终止-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
有没有其他方法可以重新启动应用程序而不会丢失连接和日志记录?
提前谢谢:Migue
你有各种方法:
1)在logrotate脚本中copytruncate,这将在没有uWSGI帮助的情况下可靠地工作
2)uWSGI日志轮换:--log-maxsize <bytes>
当达到特定大小时,将自动旋转日志
3)经典的logrotation +日志重新加载,只需添加--log-master
并触发日志重新加载http://uwsgi-docs.readthedocs.org/en/latest/MasterFIFO.html
还有其他方法(比如触摸文件时触发日志重新打开),但前一个是最常见的.