加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何旋转我的Rails 5日志?

发布时间:2020-12-17 03:50:40 所属栏目:百科 来源:网络整理
导读:我在Ubuntu 14.04上运行Rails 5.有没有办法在不依赖 Linux logrotate系统的情况下轮换我的日志?我有这个设置…… myuser@myapp:~$cat /etc/logrotate.d/myapp/home/rails/myapp/log/*.log { daily missingok rotate 2 compress delaycompress notifempty co
我在Ubuntu 14.04上运行Rails 5.有没有办法在不依赖 Linux logrotate系统的情况下轮换我的日志?我有这个设置……

myuser@myapp:~$cat /etc/logrotate.d/myapp
/home/rails/myapp/log/*.log {
  daily
  missingok
  rotate 2
  compress
  delaycompress
  notifempty
  copytruncate
}

但我的日志永远不会旋转.看他们有多臃肿……

myuser@myapp:~$ls -al /home/rails/myapp/log/
total 3958356
drwxr-xr-x  2 rails rails       4096 Jul  3 22:31 .
drwxr-xr-x 15 rails rails       4096 Sep 21 17:21 ..
-rw-rw-r--  1 rails rails          0 Jun 22 10:22 development.log
-rw-rw-r--  1 rails rails      14960 Jun  1 22:39 development.log.1
-rw-rw-r--  1 rails rails          0 Oct 22  2016 .keep
-rw-r--r--  1 rails rails  198362787 Oct 31 16:28 production.log
-rw-r--r--  1 rails rails    8615654 Jul  3 22:31 production.log.1
-rw-r--r--  1 rails rails  640621243 Jun 29 13:16 production.log.2.gz
-rw-rw-r--  1 rails rails 2856792698 Oct 31 17:12 sidekiq.log
-rw-rw-r--  1 rails rails  348853619 Jul  3 22:31 sidekiq.log.1
-rw-rw-r--  1 rails rails          0 Jul  3 22:31 test.log
-rw-rw-r--  1 rails rails      54246 Jul  3 22:31 test.log.1

有没有其他方法可以让日志轮换,或者有办法修复我已包含的配置吗?

编辑:这是设置的cron脚本

myuser@myapp:~$cat /etc/cron.daily/logrotate
#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo ""$logfile" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

编辑:根据评论我尝试将其添加到我的config / environment / production.rb文件中…

config.logger = ActiveSupport::Logger.new(config.paths['log'].first,1,50 * 1024 * 1024)

但是日志变得越来越大而没有旋转.

解决方法

通过遵循12因子方法( Treat logs as event streams),您可以“应该”将此任务委派给主管.

例如,通过使用immortal,它将为您完成所有旋转过程,而不依赖于操作系统.

基本配置文件(run.yml)可能如下所示:

cmd: bundle exec unicorn -c unicorn.rb
cwd: /arena/app-1
env:
    DEBUG: 1
    ENVIRONMENT: production
log:
    file: /var/log/app-1.log
    age: 86400 # seconds
    num: 7     # int
    size: 1    # MegaBytes
    timestamp: true # will add timesamp to log

如果您想拆分日志stderr & stdout,可以使用:

cmd: bundle exec unicorn -c unicorn.rb
cwd: /arena/app-1
env:
    DEBUG: 1
    ENVIRONMENT: production
log:
  file: /var/log/app.log
  age: 86400 # seconds
  num: 7     # int
  size: 1    # MegaBytes
stderr:
  file: /var/log/app-error.log
  age: 86400 # seconds
  num: 7     # int
  size: 1    # MegaBytes
  timestamp: true # will add timesamp to log

作为旁注,从12-factor site开始:

Twelve-factor app processes should never daemonize or write PID files. Instead,rely on the operating system’s process manager to manage output streams,respond to crashed processes,and handle user-initiated restarts and shutdowns.

[免责声明:我是immortal]的作者,其背后的一个想法确实是大规模地覆盖应用程序的自动化,而不需要担心在没有正确旋转的日志除了可用于部署之外填满磁盘(开始/通过修改run.yml文件而不需要root权限,以最简单的方式重启.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读