Class: Rage::TextFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/rage/logger/text_formatter.rb

Instance Method Summary collapse

Constructor Details

#initializeTextFormatter

Returns a new instance of TextFormatter.



2
3
4
5
6
7
# File 'lib/rage/logger/text_formatter.rb', line 2

def initialize
  @pid = Process.pid
  Iodine.on_state(:on_start) do
    @pid = Process.pid
  end
end

Instance Method Details

#call(severity, timestamp, _, message) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rage/logger/text_formatter.rb', line 9

def call(severity, timestamp, _, message)
  logger = Thread.current[:rage_logger] || { tags: [], context: {} }
  tags, context = logger[:tags], logger[:context]

  if !context.empty?
    context_msg = ""
    context.each { |k, v| context_msg << "#{k}=#{v} " }
  end

  if (final = logger[:final])
    params, env = final[:params], final[:env]
    if params && params[:controller]
      return "[#{tags[0]}] timestamp=#{timestamp} pid=#{@pid} level=info method=#{env["REQUEST_METHOD"]} path=#{env["PATH_INFO"]} controller=#{Rage::Router::Util.path_to_name(params[:controller])} action=#{params[:action]} #{context_msg}status=#{final[:response][0]} duration=#{final[:duration]}\n"
    else
      # no controller/action keys are written if there are no params
      return "[#{tags[0]}] timestamp=#{timestamp} pid=#{@pid} level=info method=#{env["REQUEST_METHOD"]} path=#{env["PATH_INFO"]} #{context_msg}status=#{final[:response][0]} duration=#{final[:duration]}\n"
    end
  end

  if tags.length == 1
    tags_msg = "[#{tags[0]}] timestamp=#{timestamp} pid=#{@pid} level=#{severity}"
  elsif tags.length == 2
    tags_msg = "[#{tags[0]}][#{tags[1]}] timestamp=#{timestamp} pid=#{@pid} level=#{severity}"
  elsif tags.length == 0
    tags_msg = "timestamp=#{timestamp} pid=#{@pid} level=#{severity}"
  else
    tags_msg = "[#{tags[0]}][#{tags[1]}]"
    i = 2
    while i < tags.length
      tags_msg << "[#{tags[i]}]"
      i += 1
    end
    tags_msg << " timestamp=#{timestamp} pid=#{@pid} level=#{severity}"
  end

  "#{tags_msg} #{context_msg}message=#{message}\n"
end