Ruby 守护进程日志轮换
Posted
技术标签:
【中文标题】Ruby 守护进程日志轮换【英文标题】:Ruby Daemons log rotation 【发布时间】:2011-07-25 17:42:59 【问题描述】:当我为 Daemons (1.1.0) gem 设置日志记录参数时,我将如何实现与此行类似的行为?
logger = Logger.new('foo.log', 10, 1024000)
守护进程选项:
options =
:ARGV => ['start'],
:dir_mode => :normal,
:dir => log_dir,
:multiple => false,
:ontop => false
:mode => :exec,
:backtrace => true,
:log_output => true
【问题讨论】:
【参考方案1】:很遗憾,Daemons gem 不使用 Logger。它将STDOUT
和STDERR
直接重定向到一个文件。
您可以在此处查看重定向工作原理的详细信息: https://github.com/ghazel/daemons/blob/master/lib/daemons/daemonize.rb#L241-261
因此,如果您想进行日志文件轮换,则必须使用 logrotate 之类的东西并重新启动守护程序。
如果这是不可接受的,我建议像您在问题中提供的那样直接使用Logger
。
【讨论】:
以上是关于Ruby 守护进程日志轮换的主要内容,如果未能解决你的问题,请参考以下文章
导致 ActiveRecord 记录器 IOError 的 Ruby 守护进程
守护进程(setsidgetpgrpsetpgidgetpgid)以及系统日志(openlogsyslogcloselog)