2016-10-02 34 views
0

我有一個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)

回答

0

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