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
- #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
171 172 173 |
# File 'lib/prefab/logger_client.rb', line 171 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
162 163 164 |
# File 'lib/prefab/logger_client.rb', line 162 def Prefab::Context.current.get(LOG_TAGS) || [] end |
#debug(progname = nil, **log_context, &block) ⇒ Object
99 100 101 |
# File 'lib/prefab/logger_client.rb', line 99 def debug(progname = nil, **log_context, &block) add_internal(DEBUG, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#debug? ⇒ Boolean
119 120 121 |
# File 'lib/prefab/logger_client.rb', line 119 def debug? true end |
#error(progname = nil, **log_context, &block) ⇒ Object
111 112 113 |
# File 'lib/prefab/logger_client.rb', line 111 def error(progname = nil, **log_context, &block) add_internal(ERROR, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#error? ⇒ Boolean
131 132 133 |
# File 'lib/prefab/logger_client.rb', line 131 def error? true end |
#fatal(progname = nil, **log_context, &block) ⇒ Object
115 116 117 |
# File 'lib/prefab/logger_client.rb', line 115 def fatal(progname = nil, **log_context, &block) add_internal(FATAL, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#fatal? ⇒ Boolean
135 136 137 |
# File 'lib/prefab/logger_client.rb', line 135 def fatal? true end |
#flush ⇒ Object
166 167 168 169 |
# File 'lib/prefab/logger_client.rb', line 166 def flush Prefab::Context.current.set("req", {"tags": nil}) super if defined?(super) end |
#info(progname = nil, **log_context, &block) ⇒ Object
103 104 105 |
# File 'lib/prefab/logger_client.rb', line 103 def info(progname = nil, **log_context, &block) add_internal(INFO, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#info? ⇒ Boolean
123 124 125 |
# File 'lib/prefab/logger_client.rb', line 123 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
139 140 141 |
# File 'lib/prefab/logger_client.rb', line 139 def level DEBUG end |
#local_log_id ⇒ Object
175 176 177 |
# File 'lib/prefab/logger_client.rb', line 175 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 @log_path_aggregator&.push(path, severity) return true if @logdev.nil? || severity < level_of(path) || @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 |
#silence ⇒ Object
179 180 181 182 183 184 |
# File 'lib/prefab/logger_client.rb', line 179 def silence @silences[local_log_id] = true yield self ensure @silences[local_log_id] = false end |
#tagged(*tags) ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/prefab/logger_client.rb', line 143 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
107 108 109 |
# File 'lib/prefab/logger_client.rb', line 107 def warn(progname = nil, **log_context, &block) add_internal(WARN, nil, progname, caller_locations(1, 1)[0], log_context, &block) end |
#warn? ⇒ Boolean
127 128 129 |
# File 'lib/prefab/logger_client.rb', line 127 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 |