web-dev-qa-db-fra.com

Comment enregistrer quelque chose dans Controller lorsque Phoenix Server est en cours d'exécution?

J'essaie d'imprimer des informations de débogage à partir de l'un de mes contrôleurs dans mon application Phoenix lorsque le serveur est en cours d'exécution.

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

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

    # ... 
  end
end
58
Sheharyar

D'accord, il s'avère que c'est assez simple. Vous devez exiger le module d'élixir Logger dans votre contrôleur et appeler l'une de ses méthodes pour enregistrer votre texte.

defmodule PhoenixApp.TopicController do
    require Logger

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

        # ...
    end
end

Les niveaux pris en charge sont:

  • :debug - pour les messages liés au débogage
  • :info - pour toute information
  • :warn - pour les avertissements
  • :error - pour les erreurs

Source: Elixir - Documentation de l'enregistreur

84
Sheharyar

Vous pouvez également simplement faire IO.puts ou IO.inspect et cela s'affichera, mais IO.puts peut être gênant si ce que vous essayez d'imprimer n'implémente pas le protocole String.Chars

11
Arthur Collé