【问题标题】:Rails 3.2: 12 Factor AppRails 3.2:12 因子应用程序
【发布时间】:2013-09-10 15:45:50
【问题描述】:

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

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

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

【问题讨论】:

  • +1 为 12 因子应用程序,谢谢!

标签: ruby-on-rails 12factor


【解决方案1】:

使用foreman。您在 Procfile 中定义您的流程

web:    rails server
worker: bundle exec sidekiq

并使用foreman start 运行它们。

进一步阅读:

【讨论】:

    【解决方案2】:

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

    在类似 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 2012-04-10
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多