如何从Phoenix日志中删除换行符

时间:2017-12-19 19:17:15

标签: elixir phoenix-framework

Phoenix有一个有用的请求日志,但我需要删除它生成的换行符:

Processing with Example.show_account/2
  Parameters: %{}
  Pipelines: [:secure_api]

这些换行符在 Phoenix.Logger.phoenix_controller_call / 4

上定义

我尝试了一个带有 String.replace / 4 的简单自定义日志格式函数,但它不起作用,因为该函数收到 IOList (第一次我'我看过它了,而不是一个字符串。

我有什么选择呢?

2 个答案:

答案 0 :(得分:1)

如果iolist的嵌套程度超过一个级别,则答案中的代码将无效,例如: [["foo\nbar"]]。我建议您将iolist转换为String,然后使用String.replace/3

iolist = [102, 111, 10, 111, [[["bar\n", 'baz']]]]

iolist |> IO.iodata_to_binary |> IO.inspect
iolist |> IO.iodata_to_binary |> String.replace("\n", "") |> IO.inspect

输出:

"fo\nobar\nbaz"
"foobarbaz"

答案 1 :(得分:0)

未完全测试,但这可能有效:

def remove_newline(msg) when is_list(msg), do: Enum.reject(msg, fn i -> i == 10 end)

def remove_newline(msg) when is_bitstring(msg), do: String.replace(msg, "\n", "")

def remove_newline(msg), do: msg