在 ruby 中使用守护程序在不同目录中添加日志

Add logs in different directory using daemon in ruby

我正在使用守护程序来包装我的脚本,并在其中指定了日志位置: 脚本看起来像这样:

#!/usr/local/bin/ruby
require 'rubygems'
require 'daemons'

Daemons.run_proc(
   'script_test', # name of daemon
   :log_output => true,
   :output_logfilename => "script-test.log",
   :logfilename => "script-test.log"
 ) do
   exec 'ruby /opt/script-test/script-test.rb'
end

问题是我的日志存储在我的脚本所在的同一目录中。我必须将我的日志添加到不同的目录,例如 /var/log/script-test,然后必须每周轮换这些日志。 为我提供一个解决方案,以便我可以将脚本的日志存储在 /var/log 目录中。

确保您使用的是绝对路径而不是相对路径

例如:

:output_logfilename => "/var/log/script-test.log",
:logfilename => "/var/log/script-test.log"

为了对您的日志进行日志轮换(假设 Linux)将以下内容添加到您的 logrotate 配置以每周轮换:

/var/log/script-test.log {
  weekly
  missingok
  compress
  notifempty
  copytruncate
}

我用这个配置工作:

Daemons.run_proc(
   'script-test', # name of daemon
   :log_output => true,
   :dir_mode => :normal,
   :dir => "/var/log",
   :output_logfilename => "script-test.log",
   :logfilename => "script-test.log"
 ) do
   exec 'ruby /opt/script-test/script-test.rb'

结束