Search code examples
djangologginguwsgisupervisord

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


i am started uWSGI via supervisord in Emperor Mode to deploy multiple Django Apps in near future. So far i only deployed one App for testing purposes.

I would like to seperate the emperor logs from my vassals. So far the loggers work. Except that i can not apply log-maxsize to my vassals logger - thats also applies to my 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] - vassal

<...>
; ---------
; # 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
<...>

As you can see i set the log-maxsize very low to see the effects immediately.

First of all - all logs working separately. However, while my emperor creates new files (emperor.log.122568) after reaching the log-maxsize my Vassal files still growing above the log-maxsize or in other words nothing happens they don´t create garden_app.log.56513.

So my Question is: How to set log-maxsize for my vassals loggers? Applies log-maxsize only to logto?

I also tried logto or logto2 on my vassal but then my emperor says "unloyal bad behaving vassal" or "Permission denied".


Solution

  • My Solution after looking long into. Now i get separate logs and rotates.

    1. change the options from logger to logto . logger will do the log job, but it does not rotate, for whatever reason. Also do not use file:.
    2. Make sure to make supervisorctl reread and supervisorctl update after changes on your uwsgi.ini

    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] - vassal

    <...>
    ; ---------
    ; # 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
    <...>