Skip to main content
版本:4.0 (Archived) 📦

LogRotate

Log Rotate就是日志切割,服务器日志越来越大,如何压缩日志,或者丢弃古老的日志?SRS讲日志管理交给外部系统,提供了接口可以切割日志。

  1. 首先,将日志文件挪走,譬如:mv objs/srs.log /tmp/srs.`date +%s`.log
  2. 然后,发送信号给SRS,SRS重新打开日志文件,譬如 killall -s SIGUSR1,SRS会关闭之前的fd,重新打开日志文件并写入。
  3. 对挪动后的日志文件处理,可以压缩存储,传输,或者删除。

Use logrotate

推荐使用程序logrotate管理日志文件,支持压缩和删除过期的文件。

  1. 安装logrotate:
sudo yum install -y logrotate
  1. 配置logrotate管理SRS的日志文件:
cat << END > /etc/logrotate.d/srs
/usr/local/srs/objs/srs.log {
    daily
    dateext
    compress
    rotate 7
    size 1024M
    sharedscripts
    postrotate
        kill -USR1 `cat /usr/local/srs/objs/srs.pid`
    endscript
}
END

备注:可以手动执行命令触发日志切割 logrotate -f /etc/logrotate.d/srs

CopyTruncate

logrotate还有一种方式是copytruncate墙裂不推荐这种方式因为会丢日志,但是它适用于不支持SIGUSR1信号的SRS2。

当然SRS3也是可以用这种方式,如果能接受丢日志的话;但是强烈建议不要用这种方式,仅仅作为SRS2的workaround方案。

配置如下,感谢wnpllrzodiac提交的PR#1561

cat << END > /etc/logrotate.d/srs
/usr/local/srs/objs/srs.log {
    daily
    dateext
    compress
    rotate 7
    size 1024M
    copytruncate
}
END

Winlin 2016.12