【发布时间】:2017-07-11 17:08:01
【问题描述】:
我有一个 phoenix 应用程序,我在其中使用 Logger 模块记录事件。
在控制器中使用时按预期输出到控制台:
#web/controllers/v1/some_controller.ex
defmodule API.V1.SomeController do
use AgilePulse.Web, :controller
require Logger
plug AgilePulse.Plugs.Params when action in [:create]
def create(conn, params) do
Logger.info "#{inspect(conn)}"
end
end
但是这样使用时什么也不输出:
#web/plugs/params.ex
defmodule AgilePulse.Plugs.Params do
require Logger
def init(opts), do: opts
def call(%Plug.Conn{params: %{"data" => data}} = conn, _opts) do
Logger.info "#{inspect(conn)}"
end
def call(conn, _opts), do: conn
end
这是为什么呢?在这种情况下如何让它发挥作用?
目前使用 Elixir 1.2 和 Phoenix 1.2.1。
【问题讨论】:
-
我猜这是因为模式与数据的匹配不正确,而您实际上使用的是
call/2的第二个定义。 -
哦,有趣的观察...让我试试
标签: logging elixir phoenix-framework