defmodule NDCLogger do def event(provider_label, method, params, request_xml, response_xml) do logger_config = Application.get_env(:NDCEx, :logger) if !is_nil(logger_config) && (logger_config[:methods] == :all || Enum.member?(logger_config[:methods], method)) do log_to_output(provider_label, params, request_xml, response_xml, logger_config) end end defp log_to_output(provider_label, params, request_xml, response_xml, logger_config) do {file, content} = openFile(provider_label) {{year, mon, day}, {hh, mm, ss}} = :os.timestamp |> :calendar.now_to_datetime datetime = "#{year}/#{mon}/#{day} #{hh}:#{mm}:#{ss}" writeInFile(file, content, "") if Enum.member?([:both, :console], logger_config[:params]), do: IO.inspect params if Enum.member?([:both, :file], logger_config[:params]), do: writeInFile(file, params, "\nPARAMS #{datetime}\n") if Enum.member?([:both, :console], logger_config[:request]), do: IO.puts request_xml if Enum.member?([:both, :file], logger_config[:request]), do: writeInFile(file, request_xml, "\n\nREQUEST #{datetime}\n") if Enum.member?([:both, :console], logger_config[:response]), do: IO.inspect response_xml if Enum.member?([:both, :file], logger_config[:response]), do: writeInFile(file, response_xml, "\n\nRESPONSE #{datetime}\n") File.close file end defp openFile(provider_label) do filename = "logs/#{provider_label}.log" content = if File.exists?(filename), do: filename |> File.read!, else: "" case File.open filename, [:write] do {:ok, file} -> {file, content} {:error, reason} -> IO.inspect reason {nil, content} end end defp writeInFile(file, data, type) do if(file !== nil) do IO.binwrite(file, type) IO.binwrite(file, data) end end end