登录文本流
问题描述:
我有一个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/2
和Enum.each/2
都通过循环流解决我的问题线和申请Logger.info
。但作为@dogbert pointed out,each
可能是在这种情况下更快,更适合:
Enum.each(stream, &Logger.info/1)
,因为你不打算使用Logger.info的'的返回值'Enum.each'可能会有点更快,更地道/ 1'。 – Dogbert
谢谢@dogbert。我会用它。 – Sheharyar