Rails 3.2:12因子应用程序

时间:2013-09-10 15:45:51

标签: ruby-on-rails 12factor

在Web应用宣言“The Twelve Factor App”的日志记录部分,它建议每个进程将日志发送到STDOUT。

如果我在本地进行Rails开发,使用Web服务器进程(“rails server”)和后台作业的Sidekiq进程(“bundle exec sidekiq”),我希望日志显示在单个流中,但我还是想在我的模型,视图,控制器和Sidekiq工作者中使用STDOUT。

有没有办法或工具能够将两个STDOUT流合并在一起,以便将日志存储在流中,以便通过拖尾单个文件来查看它们?

2 个答案:

答案 0 :(得分:2)

使用foreman。您可以在Procfile

中定义流程
web:    rails server
worker: bundle exec sidekiq

并使用foreman start运行它们。

进一步阅读:

答案 1 :(得分:0)

这取决于你期望运行的操作系统。

在类似unix的控制台上,您可以在一个控制台上在后台运行这两个进程:

> rails server &
> bundle exec sidekiq &

这会将stdout吐出到当前控制台,但你需要通过pid显式关闭它们,例如: kill `pgrep -f rails`

或者你可以运行它们中的每一个并将它们的输出附加到一个文件,然后你可以将它们拖尾(每个都在不同的控制台窗口中):

> rails server >> combined_output.txt
> bundle exec sidekiq >> combined_output.txt
> tail -f combined_output.txt