Phoenix有一个有用的请求日志,但我需要删除它生成的换行符:
Processing with Example.show_account/2
Parameters: %{}
Pipelines: [:secure_api]
这些换行符在Phoenix.Logger.phoenix_controller_call / 4上定义
我尝试了一个简单的自定义日志格式函数与String.replace / 4,但它不起作用,因为该函数接收一个IOList(我第一次看到它),而不是一个字符串。
我有什么选择呢?
如果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"
尚未完全测试,但这可能有效:
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