如何为在Nginx反向代理后面的venv中作为systemd服务运行的Gun​​icorn配置日志轮换?

问题描述

我不知道如何为我的python应用程序(由Nginx反向代理后面的Gunicorn 20.0.4提供)干净地配置日志轮转。 Official Gunicorn文档指出:

如果使用logrotate,则发送USR1信号以旋转日志 实用程序:kill -USR1 $(cat /var/run/gunicorn.pid)

我不确定我应该定位哪个pid文件以及上面logrotate指令应驻留的位置(postrotate或其他)。

SystemD服务

# /etc/systemd/system/my_app.service
[Unit]
Description=My App
After=network.target
Wants=celery-my_app.service
Wants=celerybeat-my_app.service

[Service]
User=my_app_user
Group=Nginx
Environment=FOO=bar
RuntimeDirectory=my_app
WorkingDirectory=/opt/my_app/my_project
ExecStart=/opt/my_app/my_project/venv/bin/gunicorn --workers 3 --log-level debug --error-logfile /var/log/my_app/my_app_error.log --access-logfile /var/log/my_app/my_app_access.log --capture-output --bind unix:/var/run/my_app/my_app.sock my_project.wsgi:application

[Install]
WantedBy=multi-user.target 

Logrotate配置

/var/log/my_app/my_app_error.log /var/log/my_app/my_app_access.log {
    weekly
    missingok
    rotate 4
    delaycompress
    notifempty
    copytruncate
    postrotate
        # Gunicorn alleged pid file
        kill -USR1 $(cat /var/run/my_app.pid)
    endscript
}
  • 我是否必须假定用于杀死信号的Gunicorn pid文件 文档中提到的是/var/run/my_app.pid?
  • 是否有其他指令要添加到logrotate配置文件中 下面特别是关于我的用例(venv,Gunicorn,Nginx, systemd)或我应注意的注意事项,以正确配置日志轮换?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...