You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Puma Ruby Web服务器开启日志轮转?附标准输出/错误配置

如何开启Puma Web服务器的日志轮转功能?

嘿,我来帮你搞定这个Puma日志轮转的问题~

先看你已经在puma.rb里配置了日志重定向:

# stdout_redirect '/tmp/tistdout', '/u/apps/lolcat/log/stderr'
stdout_redirect '/tmp/batman_stdout', '/tmp/batman_stderr', true

首先得说明:Puma本身并没有内置的日志轮转功能,但我们可以通过系统工具配合Puma的配置来实现,这也是最常用的方案:

  • 确保stdout_redirect的第三个参数(append)设为true:你已经这么做了,这个参数会让日志以追加模式写入,而不是覆盖旧文件,这是日志轮转的必要前提。
  • 使用系统级的logrotate工具配置轮转规则:
    1. 创建一个logrotate配置文件,比如/etc/logrotate.d/puma
    2. 写入以下配置内容:
    /tmp/batman_stdout /tmp/batman_stderr {
        daily          # 每天轮转一次日志
        rotate 7       # 保留最近7天的日志文件
        compress       # 对旧日志进行压缩
        missingok      # 如果日志文件不存在也不报错
        notifempty     # 空日志文件不轮转
        postrotate
            # 给Puma进程发送USR1信号,让它重新打开日志文件
            kill -USR1 $(cat /var/run/puma.pid)
        endscript
    }
    
    这里的关键是postrotate里的命令:发送USR1信号给Puma,它会自动重新打开日志文件,这样轮转后Puma会继续写入新的日志文件,而不是盯着旧的轮转后的文件。

如果不想依赖系统工具,也可以结合Ruby的日志处理库来实现,但logrotate是最轻量、最稳定的方案哦。

内容的提问来源于stack exchange,提问作者amit bhosale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:13:25