【发布时间】:2020-04-21 20:00:49
【问题描述】:
我在 crontab 中有一系列 cron 作业。 cron 作业通过以下格式调用 Rake 任务:
* * * * * /bin/sh -l -c 'cd /app && bundle exec rake foo:bar[baz] >> /var/log/foobar_sync.log 2>&1'
我以为我正在通过 2>&1 将他们的输出(通过 puts)重定向到 STDOUT,但我想我处理的问题不正确。
如何将这些 Rake 任务的输出以及 Rails 服务器日志本身重定向到 Rails 服务器日志输出,以便在 Rails 服务器输出旁边看到它们的输出?
【问题讨论】:
-
rake 任务是否使用
Rails.logger命令? -
@nathanvda rake 任务使用
puts,我假设它默认为环境设置的 Rails.logger。 -
不。
puts只是输出到控制台(又名 STDOUT),在您的情况下,您似乎更愿意使用Rails.logger代替?大多数时候,在我的 rake 文件中,我添加了一个同时执行这两种操作的方法(或检查标志,以便我可以选择,因为在手动运行时,我更喜欢查看puts而不是拖尾我的 rails 日志,但选择你的风格)。 -
您的 Rails 实例记录到 STDOUT 了吗?因此,当您的意思是“Rails 服务器日志输出”时,您实际上希望一个进程的标准输出与另一个进程的标准输出连接/加入? Afaik 那是不可能的,但我不确定。也许您应该改写您的问题以使其更加明显。记录到文件是不可能的吗?因为让多个进程登录同一个文件(显然)更容易。
-
也许是从arask 调用它?它将在“内部”rails 中运行代码。
标签: ruby-on-rails unix logging cron stdout