Class: Prefab::LoggerClient
- Inherits:
-
Logger
- Object
- Logger
- Prefab::LoggerClient
- Defined in:
- lib/prefab/logger_client.rb
Constant Summary collapse
- SEP =
'.'
- BASE_KEY =
'log-level'
- UNKNOWN_PATH =
'unknown.'
- LOG_TAGS =
'log.tags'
- REQ_TAGS =
'req.tags'
- 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
Class Method Summary collapse
Instance Method Summary collapse
- #add_context_keys(*keys) ⇒ Object
-
#add_internal(severity, message, progname, loc, log_context = {}, &block) ⇒ Object
InternalLoggers Will Call This.
- #config_client=(config_client) ⇒ Object
- #context_keys ⇒ Object
- #current_tags ⇒ Object
- #debug(progname = nil, **log_context, &block) ⇒ Object
- #debug? ⇒ Boolean
- #error(progname = nil, **log_context, &block) ⇒ Object
- #error? ⇒ Boolean
- #fatal(progname = nil, **log_context, &block) ⇒ Object
- #fatal? ⇒ Boolean
- #flush ⇒ Object
- #info(progname = nil, **log_context, &block) ⇒ Object
- #info? ⇒ Boolean
-
#initialize(logdev, log_path_aggregator: nil, formatter: Options::DEFAULT_LOG_FORMATTER, prefix: nil) ⇒ LoggerClient
constructor
A new instance of LoggerClient.
- #internal_logger(path = nil) ⇒ Object
- #level ⇒ Object
- #local_log_id ⇒ Object
- #log(message, path, progname, severity, log_context = {}) ⇒ Object
- #log_internal(severity, message, path, log_context = {}, &block) ⇒ Object
- #should_log?(severity, path) ⇒ Boolean
- #silence ⇒ Object
- #tagged(*tags) ⇒ Object
- #warn(progname = nil, **log_context, &block) ⇒ Object
- #warn? ⇒ Boolean
- #with_context_keys(*keys) ⇒ Object
Constructor Details
#initialize(logdev, log_path_aggregator: nil, formatter: Options::DEFAULT_LOG_FORMATTER, prefix: nil) ⇒ LoggerClient
Returns a new instance of LoggerClient.
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/prefab/logger_client.rb', line 25 def initialize(logdev, log_path_aggregator: nil, formatter: Options::DEFAULT_LOG_FORMATTER, prefix: nil) super(logdev) self.formatter = Prefab::Logging::FormatterBase.new(formatter_proc: formatter, logger_client: self) @config_client = BootstrappingConfigClient.new @silences = Concurrent::Map.new(initial_capacity: 2) @recurse_check = Concurrent::Map.new(initial_capacity: 2) @prefix = "#{prefix}#{prefix && '.'}" @context_keys_map = Concurrent::Map.new(initial_capacity: 4) @log_path_aggregator = log_path_aggregator @@shared_instance = self end |
Class Method Details
.instance ⇒ Object
21 22 23 |
# File 'lib/prefab/logger_client.rb', line 21 def self.instance @@shared_instance ||= LoggerClient.new($stdout) end |
Instance Method Details
#add_context_keys(*keys) ⇒ Object
39 40 41 |
# File 'lib/prefab/logger_client.rb', line 39 def add_context_keys(*keys) context_keys.merge(keys) end |
#add_internal(severity, message, progname, loc, log_context = {}, &block) ⇒ Object
InternalLoggers Will Call This
59 60 61 62 63 64 |
# File 'lib/prefab/logger_client.rb', line 59 def add_internal(severity, , progname, loc, log_context = {}, &block) path_loc = get_loc_path(loc) path = @prefix + path_loc log(, path, progname, severity, log_context, &block) end |
#config_client=(config_client) ⇒ Object
176 177 178 |
# File 'lib/prefab/logger_client.rb', line 176 def config_client=(config_client) @config_client = config_client end |
#context_keys ⇒ Object
54 55 56 |
# File 'lib/prefab/logger_client.rb', line 54 def context_keys @context_keys_map.fetch_or_store(local_log_id, Concurrent::Set.new) end |
#current_tags ⇒ Object
167 168 169 |
# File 'lib/prefab/logger_client.rb', line 167 def Prefab::Context.current.get(LOG_TAGS) || [] end |
#debug(progname = nil, **log_context, &block) ⇒ Object
104 105 106 |
# File 'lib/prefab/logger_client.rb', line 104 def debug(progname = nil, **log_context, &block) add_internal(DEBUG, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#debug? ⇒ Boolean
124 125 126 |
# File 'lib/prefab/logger_client.rb', line 124 def debug? true end |
#error(progname = nil, **log_context, &block) ⇒ Object
116 117 118 |
# File 'lib/prefab/logger_client.rb', line 116 def error(progname = nil, **log_context, &block) add_internal(ERROR, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#error? ⇒ Boolean
136 137 138 |
# File 'lib/prefab/logger_client.rb', line 136 def error? true end |
#fatal(progname = nil, **log_context, &block) ⇒ Object
120 121 122 |
# File 'lib/prefab/logger_client.rb', line 120 def fatal(progname = nil, **log_context, &block) add_internal(FATAL, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#fatal? ⇒ Boolean
140 141 142 |
# File 'lib/prefab/logger_client.rb', line 140 def fatal? true end |
#flush ⇒ Object
171 172 173 174 |
# File 'lib/prefab/logger_client.rb', line 171 def flush Prefab::Context.current.set("req", {"tags": nil}) super if defined?(super) end |
#info(progname = nil, **log_context, &block) ⇒ Object
108 109 110 |
# File 'lib/prefab/logger_client.rb', line 108 def info(progname = nil, **log_context, &block) add_internal(INFO, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#info? ⇒ Boolean
128 129 130 |
# File 'lib/prefab/logger_client.rb', line 128 def info? true end |
#internal_logger(path = nil) ⇒ Object
50 51 52 |
# File 'lib/prefab/logger_client.rb', line 50 def internal_logger(path = nil) InternalLogger.new(path, self) end |
#level ⇒ Object
144 145 146 |
# File 'lib/prefab/logger_client.rb', line 144 def level DEBUG end |
#local_log_id ⇒ Object
180 181 182 |
# File 'lib/prefab/logger_client.rb', line 180 def local_log_id Thread.current.__id__ end |
#log(message, path, progname, severity, log_context = {}) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/prefab/logger_client.rb', line 76 def log(, path, progname, severity, log_context = {}) severity ||= ::Logger::UNKNOWN return true if !should_log? severity, path return true if @logdev.nil? || @silences[local_log_id] progname = @progname if progname.nil? if .nil? if block_given? = yield else = progname progname = @progname end end @logdev.write( (format_severity(severity), Time.now, progname, , path, stringify_keys(log_context.merge(fetch_context_for_context_keys))) ) true end |
#log_internal(severity, message, path, log_context = {}, &block) ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/prefab/logger_client.rb', line 66 def log_internal(severity, , path, log_context = {}, &block) return if @recurse_check[local_log_id] @recurse_check[local_log_id] = true begin log(, path, nil, severity, log_context, &block) ensure @recurse_check[local_log_id] = false end end |
#should_log?(severity, path) ⇒ Boolean
99 100 101 102 |
# File 'lib/prefab/logger_client.rb', line 99 def should_log?(severity, path) @log_path_aggregator&.push(path, severity) severity >= level_of(path) end |
#silence ⇒ Object
184 185 186 187 188 189 |
# File 'lib/prefab/logger_client.rb', line 184 def silence @silences[local_log_id] = true yield self ensure @silences[local_log_id] = false end |
#tagged(*tags) ⇒ Object
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/prefab/logger_client.rb', line 148 def tagged(*) to_add = .flatten.compact if block_given? = += to_add unless to_add.empty? Prefab::Context.with_merged_context({ "log" => { "tags" => } }) do with_context_keys LOG_TAGS do yield self end end else = Prefab::Context.current.get(REQ_TAGS) || [] += to_add unless to_add.empty? add_context_keys REQ_TAGS Prefab::Context.current.set("req", {"tags": }) self end end |
#warn(progname = nil, **log_context, &block) ⇒ Object
112 113 114 |
# File 'lib/prefab/logger_client.rb', line 112 def warn(progname = nil, **log_context, &block) add_internal(WARN, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#warn? ⇒ Boolean
132 133 134 |
# File 'lib/prefab/logger_client.rb', line 132 def warn? true end |
#with_context_keys(*keys) ⇒ Object
43 44 45 46 47 48 |
# File 'lib/prefab/logger_client.rb', line 43 def with_context_keys(*keys) context_keys.merge(keys) yield ensure context_keys.subtract(keys) end |