在Web应用宣言“The Twelve Factor App”的日志记录部分,它建议每个进程将日志发送到STDOUT。
如果我在本地进行Rails开发,使用Web服务器进程(“rails server”)和后台作业的Sidekiq进程(“bundle exec sidekiq”),我希望日志显示在单个流中,但我还是想在我的模型,视图,控制器和Sidekiq工作者中使用STDOUT。
有没有办法或工具能够将两个STDOUT流合并在一起,以便将日志存储在流中,以便通过拖尾单个文件来查看它们?
答案 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