Current section

Files

Jump to
ndc_ex_sdk lib ndc_logger.ex
Raw

lib/ndc_logger.ex

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