Class: Prefab::LoggerClient

Inherits:
Logger
  • Object
show all
Defined in:
lib/prefab/logger_client.rb

Constant Summary collapse

SEP =
'.'
BASE_KEY =
'log-level'
UNKNOWN_PATH =
'unknown.'
INTERNAL_PREFIX =
'cloud.prefab.client'
LOG_LEVEL_LOOKUPS =
{
  PrefabProto::LogLevel::NOT_SET_LOG_LEVEL => ::Logger::DEBUG,
  PrefabProto::LogLevel::TRACE => ::Logger::DEBUG,
  PrefabProto::LogLevel::DEBUG => ::Logger::DEBUG,
  PrefabProto::LogLevel::INFO => ::Logger::INFO,
  PrefabProto::LogLevel::WARN => ::Logger::WARN,
  PrefabProto::LogLevel::ERROR => ::Logger::ERROR,
  PrefabProto::LogLevel::FATAL => ::Logger::FATAL
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(logdev, log_path_aggregator: nil, formatter: nil, prefix: nil) ⇒ LoggerClient

Returns a new instance of LoggerClient.



20
21
22
23
24
25
26
27
28
# File 'lib/prefab/logger_client.rb', line 20

def initialize(logdev, log_path_aggregator: nil, formatter: nil, prefix: nil)
  super(logdev)
  self.formatter = formatter
  @config_client = BootstrappingConfigClient.new
  @silences = Concurrent::Map.new(initial_capacity: 2)
  @prefix = "#{prefix}#{prefix && '.'}"

  @log_path_aggregator = log_path_aggregator
end

Instance Method Details

#add_internal(severity, message, progname, loc, &block) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/prefab/logger_client.rb', line 30

def add_internal(severity, message, progname, loc, &block)
  path_loc = get_loc_path(loc)
  path = @prefix + path_loc

  @log_path_aggregator&.push(path_loc, severity)

  log(message, path, progname, severity, &block)
end

#config_client=(config_client) ⇒ Object



115
116
117
# File 'lib/prefab/logger_client.rb', line 115

def config_client=(config_client)
  @config_client = config_client
end

#debug(progname = nil, &block) ⇒ Object



71
72
73
# File 'lib/prefab/logger_client.rb', line 71

def debug(progname = nil, &block)
  add_internal(DEBUG, nil, progname, caller_locations(1, 1)[0], &block)
end

#debug?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/prefab/logger_client.rb', line 91

def debug?
  true
end

#error(progname = nil, &block) ⇒ Object



83
84
85
# File 'lib/prefab/logger_client.rb', line 83

def error(progname = nil, &block)
  add_internal(ERROR, nil, progname, caller_locations(1, 1)[0], &block)
end

#error?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/prefab/logger_client.rb', line 103

def error?
  true
end

#fatal(progname = nil, &block) ⇒ Object



87
88
89
# File 'lib/prefab/logger_client.rb', line 87

def fatal(progname = nil, &block)
  add_internal(FATAL, nil, progname, caller_locations(1, 1)[0], &block)
end

#fatal?Boolean

Returns:

  • (Boolean)


107
108
109
# File 'lib/prefab/logger_client.rb', line 107

def fatal?
  true
end

#info(progname = nil, &block) ⇒ Object



75
76
77
# File 'lib/prefab/logger_client.rb', line 75

def info(progname = nil, &block)
  add_internal(INFO, nil, progname, caller_locations(1, 1)[0], &block)
end

#info?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/prefab/logger_client.rb', line 95

def info?
  true
end

#levelObject



111
112
113
# File 'lib/prefab/logger_client.rb', line 111

def level
  DEBUG
end

#local_log_idObject



119
120
121
# File 'lib/prefab/logger_client.rb', line 119

def local_log_id
  Thread.current.__id__
end

#log(message, path, progname, severity) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/prefab/logger_client.rb', line 49

def log(message, path, progname, severity)
  severity ||= ::Logger::UNKNOWN

  return true if @logdev.nil? || severity < level_of(path) || @silences[local_log_id]

  progname = @progname if progname.nil?

  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = @progname
    end
  end

  @logdev.write(
    format_message(format_severity(severity), Time.now, progname, message, path)
  )
  true
end

#log_internal(message, path, progname, severity, &block) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/prefab/logger_client.rb', line 39

def log_internal(message, path, progname, severity, &block)
  path = if path
           "#{INTERNAL_PREFIX}.#{path}"
         else
           INTERNAL_PREFIX
         end

  log(message, path, progname, severity, &block)
end

#silenceObject



123
124
125
126
127
128
# File 'lib/prefab/logger_client.rb', line 123

def silence
  @silences[local_log_id] = true
  yield self
ensure
  @silences[local_log_id] = false
end

#warn(progname = nil, &block) ⇒ Object



79
80
81
# File 'lib/prefab/logger_client.rb', line 79

def warn(progname = nil, &block)
  add_internal(WARN, nil, progname, caller_locations(1, 1)[0], &block)
end

#warn?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/prefab/logger_client.rb', line 99

def warn?
  true
end