登录文本流

登录文本流

问题描述:

我有一个Elixir应用程序,我使用Porcelain产生了一个外部进程。产生的过程'STDOUT可作为proc.out(形式为#Function<59.89908360/2 in Stream.unfold/2>)的文本流。登录文本流

我可以使用IO.stream/2逐行打印流的内容,但我明确地想要使用Logger.info来完成。这是它目前的样子:

proc = Porcelain.spawn("node", ["/path/to/node/server.js"], [out: :stream]) 
stream = proc.out 
Enum.into(stream, IO.stream(:stdio, :line)) 

我已经试过目前:

  • [out: Logger.info]
  • Enum.into(proc.out, Logger.info)

Enum.map/2Enum.each/2都通过循环流解决我的问题线和申请Logger.info。但作为@dogbert pointed outeach可能是在这种情况下更快,更适合:

Enum.each(stream, &Logger.info/1) 
+1

,因为你不打算使用Logger.info的'的返回值'Enum.each'可能会有点更快,更地道/ 1'。 – Dogbert

+0

谢谢@dogbert。我会用它。 – Sheharyar