Как что-то зарегистрировать в контроллере, когда работает Phoenix Server?

Я пытаюсь распечатать отладочную информацию с одного из моих контроллеров в приложении Phoenix, когда сервер работает.

defmodule PhoenixApp.TopicController do
  use PhoenixApp.Web, :controller

  def index(conn, _params) do
    log("this text")

    # ... 
  end
end

person Sheharyar    schedule 20.06.2015    source источник


Ответы (2)


Хорошо, оказалось, что все довольно просто. Вам необходимо потребовать модуль Logger elixir в вашем контроллере и вызвать один из его методов для записи вашего текста.

defmodule PhoenixApp.TopicController do
    require Logger

    def index(conn, params) do
        Logger.info  "Logging this text!"
        Logger.debug "Var value: #{inspect(params)}"

        # ...
    end
end

Поддерживаемые уровни:

  • :debug - для сообщений, связанных с отладкой
  • :info - для любой информации
  • :warn - для предупреждений
  • :error - на ошибки

Источник: Elixir - документация регистратора

person Sheharyar    schedule 20.06.2015
comment
Если вы хотите что-то проверить в своем журнале, вы можете Logger.debug "debugging #{inspect thing}", где thing - это объект, который вы хотите вывести (stackoverflow.com/questions/28951208/) - person TimDog; 25.02.2016

Вы также можете просто сделать IO.puts или IO.inspect, и он появится, но IO.puts может вызвать проблемы, если то, что вы пытаетесь распечатать, не реализует протокол String.Chars

person Arthur Collé    schedule 21.06.2015