我有一个凤凰应用程序,我正在使用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。
答案 0 :(得分:0)
很可能插件中的第一个call/2
模式不匹配,而且只是没有被调用。
向第二个Logger.info/1
模式添加call/2
次调用,您应该会看到它按预期工作。
def call(conn, _opts) do
Logger.info "Hello!"
conn
end