在使用 uwsgi 时,日志管理是一个重要的方面,uwsgi 自带日志切割特性,也可以使用 Linux 的 logrotate 服务来管理 uwsgi 的日志切割。

使用 uwsgi 自身的日志切割特性

你可以在 uwsgi 配置文件中使用 logrotate 选项来启用日志切割。以下是一个配置示例:

[uwsgi]
logto = /var/log/uwsgi/myapp.log
logrotate = /etc/logrotate.d/uwsgi

接着创建一个 logrotate 配置文件 /etc/logrotate.d/uwsgi,如下:

/var/log/uwsgi/*.log {
    daily
    missingok
    rotate 7
    compress
    notifempty
    create 640 uwsgi adm
    sharedscripts
    postrotate
        systemctl restart uwsgi.service
    endscript
}

使用 Linux 的 logrotate 服务

另一种方法是使用 Linux 的 logrotate 服务来管理 uwsgi 的日志切割。创建一个配置文件 uwsgi/etc/logrotate.d/ 目录,并添加以下内容:

/var/log/uwsgi/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 uwsgi adm
    sharedscripts
    postrotate
        systemctl restart uwsgi.service
    endscript
}

配置详情: daily - 日志将每天轮换一次。 rotate 7 - 保留 7 天的日志。 compress - 旧的日志文件将被压缩。 delaycompress - 延迟压缩,它将不会压缩最新的归档文件。 create 640 uwsgi adm - 用指定的权限和所有者/组创建新的日志文件。 postrotate … endscript - 日志轮换后要运行的脚本,这里是重启 uwsgi 服务来确保它开始写入新的日志文件。

使用 uwsgi 的 log-maxsize 选项

你还可以使用 log-maxsize 选项来限制日志文件的大小,示例如下:

[uwsgi]
logto = /var/log/uwsgi/myapp.log
log-maxsize = 1000000

在这里,log-maxsize 选项用来指定日志文件的最大大小(以字节为单位),在达到这个大小后,uwsgi 将自动轮换日志文件。

注意

  • 路径 /var/log/uwsgi/ 和服务名 uwsgi.service 是示例,你应该根据你的实际环境进行更改。
  • 请确保 uwsgi 进程有权写入指定的日志文件和目录。
  • 重启 uwsgi 服务是为了确保它开始写入新的日志文件。在一些情况下,你可能需要发送一个特定的信号而不是完全重启服务来重新打开日志文件。