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

问题描述 投票:0回答:2

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

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

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

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

我有什么选择呢?

elixir phoenix-framework
2个回答
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"

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
© www.soinside.com 2019 - 2024. All rights reserved.