繁体   English   中英

Phoenix / Elixir-记录器可在某些模块中工作,而在其他模块中则无法工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM