如何为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工具配置轮转规则:- 创建一个
logrotate配置文件,比如/etc/logrotate.d/puma - 写入以下配置内容:
这里的关键是/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
相关产品推荐
相关产品推荐

