3

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

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

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

4

2 回答 2

2

使用工头。您在一个Procfile

web:    rails server
worker: bundle exec sidekiq

并使用foreman start.

进一步阅读:

于 2013-09-30T12:19:08.150 回答
0

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

在类 Unix 控制台上,您可以在单个控制台上在后台运行两个进程:

> rails server &
> bundle exec sidekiq &

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

或者,您可以运行它们中的每一个并将它们的输出附加到一个文件中,然后您可以跟踪该文件(每个都在单独的控制台窗口中):

> rails server >> combined_output.txt
> bundle exec sidekiq >> combined_output.txt
> tail -f combined_output.txt
于 2013-09-10T16:05:44.827 回答