Warning

This documentation is no longer maintained. The new documentation is available at dev.kitsu.cloud.

Log rotation

Log produced by the API grow quickly and lead to big log files. You will need quickly to configure logrotate to create a new log file every day.

Store PID of zou processes

To create a folder on boot to store pid files add a RuntimeDirectory add a line before ExecStart in the unit file (/etc/systemd/system/zou.service):

RuntimeDirectory=zou

Add this to the ExecStart line to create the pid file for zou

-p /run/zou/zou.pid

For example:

ExecStart=/opt/zou/zouenv/bin/gunicorn -p /run/zou/zou.pid -c /etc/zou/gunicorn.py -b 127.0.0.1:5000 zou.app:app

Edit the zou-events unit file to create the pid file for zou-events
(/etc/systemd/system/zou-events.service):

-p /run/zou/zou-events.pid

PIDs are now stored in mentioned files.

Configure logrotate

We can now proceed to the Logrotate configuration. Logrotate is a Unix tool that will handle the log rotation for you. It just requires a configuration file to work properly.

Add this logrotate configuration (/etc/logrotate.d/zou):

/opt/zou/logs/gunicorn_access.log {
    daily
    missingok
    rotate 14
    notifempty
    nocompress
    size 100M
    create 644 zou zou
    postrotate
        kill -USR1 `cat /run/zou/zou.pid`
    endscript
}

/opt/zou/logs/gunicorn_error.log {
    daily
    missingok
    rotate 14
    nocompress
    size 100M
    notifempty
    create 644 zou zou
    postrotate
        kill -USR1 `cat /run/zou/zou.pid`
    endscript
}

/opt/zou/logs/gunicorn_events_access.log {
    daily
    missingok
    rotate 14
    nocompress
    size 100M
    notifempty
    create 644 zou zou
    postrotate
        kill -USR1 `cat /run/zou/zou-events.pid`
    endscript
}

/opt/zou/logs/gunicorn_events_error.log {
    daily
    missingok
    rotate 14
    nocompress
    size 100M
    notifempty
    create 644 zou zou
    postrotate
        kill -USR1 `cat /run/zou/zou-events.pid`
    endscript
}

It will create a new log file for each day, and keep only the last 14 files.

You can test the log rotation is set up correctly by running

logrotate /etc/logrotate.d/zou --debug

You're done with log rotation!