Dak*_*kar 7 ruby logging daemons
我正在使用ruby 1.9.2p180(2011-02-18修订版30909)
为了进行日志记录,我使用了日志记录宝石.我的程序有两个块,用作守护进程.
但是从这些块进行日志记录会导致错误,并且没有任何内容写入日志文件:
log shifting failed. closed stream
log writing failed. closed stream
Run Code Online (Sandbox Code Playgroud)
以下是代码中发生的情况:
log = Logger.new(logbase + 'logfile.log', 'monthly')
log.level = Logger::INFO
proc = Daemons.call(options) do
# [...]
log.info "Any Logmessage"
# [...]
end
Run Code Online (Sandbox Code Playgroud)
任何想法,哪里错了?
该Daemons宝石关闭所有的文件描述符,当它daemonizes过程.因此,在守护程序块之前打开的任何日志文件都将在分叉进程内关闭.
因为你不能写入已关闭的文件描述符 - >错误.
您可以通过阅读本章了解更多关于守护程序时会发生什么的信息:
守护进程内部对我的守护进程做了什么?
http://daemons.rubyforge.org/Daemons.html
解决方案是在守护程序块内而不是在其外部打开日志文件.那应该解决它.但请注意,守护进程会将工作目录更改为/,因此在引用日志文件路径时请将其考虑在内.