gpt4 book ai didi

Ruby:记录器和守护进程

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:12 26 4
gpt4 key购买 nike

我正在使用 ruby​​ 1.9.2p180(2011-02-18 修订版 30909)

为了进行日志记录,我使用了日志记录 gem。我的程序有两个 block ,用作守护进程。

但是从这些 block 中记录会导致错误,并且不会将任何内容写入日志文件:

log shifting failed. closed stream
log writing failed. closed stream

这是代码中发生的事情:

log = Logger.new(logbase + 'logfile.log', 'monthly')
log.level = Logger::INFO

proc = Daemons.call(options) do
# [...]
log.info "Any Logmessage"
# [...]
end

有什么想法吗?

最佳答案

Daemons gem 在守护进程时关闭所有文件描述符。因此,在 Daemons block 之前打开的任何日志文件都将在 fork 进程内关闭。

并且由于您无法写入已关闭的文件描述符 -> 错误。

您可以通过阅读本章了解更多有关将进程守护进程时发生的情况:

守护进程在内部对我的守护进程做了什么?
http://daemons.rubyforge.org/Daemons.html

解决方案是在守护程序 block 内部而不是外部打开日志文件。那应该解决它。但请注意,守护进程会将工作目录更改为 /,因此在引用日志文件路径时请考虑到这一点。

关于Ruby:记录器和守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com