ruby-on-rails - 每当 gem : I set :output but the logfile doesn't show up where I'd expect it to

标签 ruby-on-rails ruby macos cron whenever

在我的 schedule.rb 文件中,我有以下几行:

set :output, '/log/cron_log.log'

every 5.minutes do
  command 'echo "hello"'
end

我按照这个问题 Rails, using whenever gem in development 中的建议运行了 whenever -w ,并且我假设 cronfile 已编写并正在运行。 (我也尝试重新启动 Rails 服务器。)

当我运行 $ crontab -l 时,我看到以下内容:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash
-l -c 'echo "hello" >> /log/cron_log.log 2>&1'

但是我找不到日志文件。我检查了 rails_project/log、~/log 和/log 无济于事。在 OSX 顺便说一句。

如何获取要写入 Rails 项目日志文件夹的日志文件?

最佳答案

你的日志在哪里?

您将输出文件放在最高目录级别:

$ cd /log

查看文件是否存在以及其中是否有数据:

$ ls -la cron_log.log

如果需要创建日志文件:

$ touch cron_log.log

为您自己的本地调试打开权限(不要在生产中这样做!)

$ chmod +rw cron_log.log  

你的命令在运行吗?

手动运行命令以查看它是否按预期工作:

$ /bin/bash -l -c 'echo "hello" >> /log/cron_log.log 2>&1'

要提高安全性并保护路径,请使用完整路径:

wrong: command 'echo "hello"'
right: command '/bin/echo "hello"'

查找命令完整路径:

$ which echo

验证 cron 是否按预期运行:

$ sudo grep CRON /var/log/syslog

grep 结果应该有这样的行:

Jan 1 12:00:00 example.com CRON[123]: (root) CMD (... your command here ...)

您使用的是 Mac 吗?

如果您没有在系统日志中看到输出,并且您使用的是 Mac,您可能需要阅读有关 Mac OSX 从 cron 切换到 launchd 的内容.

查看 cron plist (/System/Library/LaunchDaemons/com.vix.cron.plist) 并使用 stdout/stderr 路径调试 cron 本身。我不记得 launchctl 卸载和 launchctl 加载 plist 是否足够,或者因为它是一个系统守护进程,如果你必须完全重新启动。 (参见 where is the cron log file in lion)

相对于Rails如何登录?

要将日志与 Rails 应用相关联,请省略前导斜杠(通常将其称为 cron.log)

set :output, "log/cron.log"

将日志放在特定的完全限定目录中:

set :output, '/abc/def/ghi/log/cron.log'

Whenever wiki 有一些关于重定向输出的好例子:

https://github.com/javan/whenever/wiki/Output-redirection-aka-logging-your-cron-jobs

例子:

every 3.hours do
  runner "MyModel.some_process", :output => 'cron.log'     
  rake "my:rake:task", :output => {:error => 'error.log', :standard => 'cron.log'}
  command "/usr/bin/cmd"
end  

关于ruby-on-rails - 每当 gem : I set :output but the logfile doesn't show up where I'd expect it to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612818/

相关文章:

ruby-on-rails - rails : Iterate dynamically over params hash to verify they exist

ruby-on-rails - 将Google图表导出为PDF

Ruby gem mysql2 安装错误

ruby-on-rails - 帮助在 ruby​​ on rails 中为 enki 博客配置 openid

swift - 如何访问同一 Controller 上多个 Collection View 上的引用 socket

ruby-on-rails - 如何在 REST API 中为当前用户提供路由?

ruby-on-rails - RubyMine 找不到 RSpec 规范

ruby - Nokogiri 1.5.2 未安装在 Ubuntu 11.10 上

objective-c - macOS 上的 Metal : Visibility testing behaving incorrectly

C++ TCP Socket客户端发送数据失败