如何打印conn内容?

rog*_*rgl 16 elixir phoenix-framework

我尝试了以下内容

def index(conn, _params) do
    Logger.debug conn
     ......
Run Code Online (Sandbox Code Playgroud)

但我明白了

protocol String.Chars not implemented for %Plug.Conn
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过Apex,但那也没有用.

Bri*_*ick 26

使用 inspect conn, pretty: true

... 要么:

inspect conn, pretty: true, limit: 30000

......因为Conn结构非常大.

  • 如果您不介意滚动太多,也可以使用limit::infinity。 (2认同)

Pat*_*ity 10

您应该能够使用Kernel.inspect/2来打印conn:

Logger.debug inspect(conn)
Run Code Online (Sandbox Code Playgroud)

  • 它将打印连接,但遗憾的是结果并不完美...... (5认同)
  • 这个答案并不完整。见下文。 (3认同)

Rob*_*sch 5

您确实可以使用Kernel.inspect/2来漂亮地打印使用的内容%Plug.Conn{}

def index(conn, _params) do
  :logger.info inspect(conn, pretty: true)
  ....
end
Run Code Online (Sandbox Code Playgroud)

请注意,以前的答案 usingLogger应该提到您require Logger在使用之前需要这样做,例如:

require Logger

def index(conn, _params) do
  Logger.info inspect(conn, pretty: true)
  ....
end
Run Code Online (Sandbox Code Playgroud)