如何"log-maxsize" uWSGI vassal 记录器?

How to "log-maxsize" the uWSGI vassal logger?

我开始 uWSGI 通过 supervisord 在皇帝模式下部署多个 Django 应用程序在不久的将来。到目前为止,我只部署了一个应用程序用于测试目的。

我想把皇帝日志和我的封臣分开。到目前为止,记录器工作。除了我不能将 log-maxsize 应用到我的 vassals logger - 这也适用于我的 vassals req-logger.

[uwsgi]

[program:uwsgi]
command=uwsgi 
    --master 
    --emperor %(ENV_HOME)s/etc/uwsgi/vassals
    --logto %(ENV_HOME)s/logs/uwsgi/emperor/emperor.log
    --log-maxsize 20
    --enable-threads
    --log-master

<...autostart etc...>

[garden_app] - 附庸

<...>
; ---------
; # Logger #
; ---------
; diable default req log and set request Log 
req-logger = file:%(var_logs)/vassal_garden/garden_request.log
disable-logging = true
log-4xx = true
log-5xx = true
log-maxsize = 20
; set app / error Log
logger = file:%(var_logs)/vassal_garden/garden_app.log
log-maxsize = 20
<...>

如您所见,我将 log-maxsize 设置得非常低以立即看到效果。

首先 - 所有日志都是分开工作的。 但是,虽然我的 emperor 在达到 log-maxsize 后创建了新文件 (emperor.log.122568),但我的 Vassal 文件仍在 log-maxsize 以上增长,或者换句话说,他们没有创建任何东西garden_app.log.56513.

所以我的问题是: 如何为我的 vassal 记录器设置 log-maxsizelog-maxsize 仅适用于 logto?

我也试过 logtologto2 我的封臣,但后来我的皇帝说 "unloyal bad behaving vassal" 或 "Permission denied"。

经过长时间的研究,我的解决方案。现在我得到单独的日志并轮换。

  1. 将选项从 logger 更改为 logtologger 将执行日志作业,但无论出于何种原因,它都不会轮换。也不要使用 file:.
  2. 确保 supervisorctl rereadsupervisorctl update 在您的 uwsgi.ini
  3. 更改后

uwsgi.ini

[program:uwsgi]
command=uwsgi 
    --master 
    --emperor %(ENV_HOME)s/etc/uwsgi/vassals 
    --logto %(ENV_HOME)s/logs/uwsgi/emperor/emperor.log
    --log-maxsize 350000
    --enable-threads

<...autostart etc...>

[garden_app] - 附庸

<...>
; ---------
; # Logger #
; ---------
; default req logger and set request Log and - currently disabled 
req-logger = file:%(var_logs)/vassal_garden/garden_request.log
disable-logging = true
log-4xx = true
log-5xx = true
log-maxsize = 350000
; set app / error Log - check
logto = %(var_logs)/vassal_garden/garden_app.log 
log-maxsize = 350000
log-backupname = %(var_logs)/vassal_garden/garden_app.old.log
<...>