How to Log something in Controller when Phoenix Server is running?

27,743

Solution 1

Okay, turns out it's pretty straight forward. You need to require the Logger elixir module in your controller and call one of it's methods to log your text.

defmodule PhoenixApp.TopicController do
    require Logger

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

        # ...
    end
end

Supported levels are:

  • :debug - for debug-related messages
  • :info - for information of any kind
  • :warn - for warnings
  • :error - for errors

Source: Elixir - Logger Documentation

Solution 2

You can also just do IO.puts or IO.inspect and it'll show up, but IO.puts can be troublesome if what you're trying to print doesn't implement the String.Chars protocol

Share:
27,743
Sheharyar
Author by

Sheharyar

Now among the top 5 users from Pakistan!

Updated on April 12, 2020

Comments

  • Sheharyar
    Sheharyar about 4 years

    I'm trying to print some debug information from one of my Controllers in my Phoenix app when the server is running.

    defmodule PhoenixApp.TopicController do
      use PhoenixApp.Web, :controller
    
      def index(conn, _params) do
        log("this text")
    
        # ... 
      end
    end