2016-10-02 4 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/2 и Enum.each/2 как решить мою проблему итерация потока линий и применения Logger.info. Но, как @dogbert pointed out, each может быть быстрее и лучше подходит в данном случае:

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

'Enum.each' может быть немного быстрее и более идиоматических, так как вы не собираетесь использовать возвращаемое значение' logger.info/1'. – Dogbert

+0

Спасибо @dogbert. Я буду использовать это. – Sheharyar

Смежные вопросы