[英]Phoenix/Elixir - Logger works in some modules, but not others
我有一个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
模式很可能不匹配,只是没有被调用。
将Logger.info/1
调用添加到第二个call/2
模式,您应该会看到它按预期工作。
def call(conn, _opts) do
Logger.info "Hello!"
conn
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.