Module: Telemetry::Logger::Builder

Included in:
Telemetry::Logger
Defined in:
lib/telemetry/logger/builder.rb

Instance Method Summary collapse

Instance Method Details

#format(include_pid: false) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/telemetry/logger/builder.rb', line 10

def format(include_pid: false, **)
  log.formatter = proc do |severity, datetime, _progname, msg|
    string = "[#{datetime}]"
    string.concat("[#{::Process.pid}]") if include_pid
    string.concat(" #{severity} #{msg}\n")
    string
  end
end

#levelObject



33
34
35
# File 'lib/telemetry/logger/builder.rb', line 33

def level
  log.level
end

#logObject



19
20
21
# File 'lib/telemetry/logger/builder.rb', line 19

def log
  @log ||= output(**opts)
end

#log_level=(level) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/telemetry/logger/builder.rb', line 37

def log_level=(level)
  log.level = case level
              when 'trace', 'debug'
                ::Logger::DEBUG
              when 'info'
                ::Logger::INFO
              when 'warn'
                ::Logger::WARN
              when 'error'
                ::Logger::ERROR
              when 'fatal'
                ::Logger::FATAL
              when nil
                42
              else
                if level.is_a? Integer
                  level
                else
                  0
                end
              end
  @log = log
end

#optsObject



6
7
8
# File 'lib/telemetry/logger/builder.rb', line 6

def opts
  @opts ||= {}
end

#output(**options) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/telemetry/logger/builder.rb', line 23

def output(**options)
  return @log unless @log.nil?

  @log = ::Logger.new(options[:log_file] || $stdout)
  self.log_level = options[:level] if options.key? :level
  self.format

  @log
end