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