Class: Smplkit::Logging::LoggingClient
- Inherits:
-
Object
- Object
- Smplkit::Logging::LoggingClient
- Defined in:
- lib/smplkit/logging/client.rb
Overview
Synchronous logging runtime namespace.
Obtained via Smplkit::Client#logging. Manages the discovery and level application for a customer’s logging frameworks via pluggable adapters. CRUD has moved to mgmt.loggers.* / mgmt.log_groups.*.
Instance Method Summary collapse
- #_close ⇒ Object
- #adapters ⇒ Object
- #delete(name) ⇒ Object
- #get(name) ⇒ Object
-
#initialize(parent, manage:, metrics:, logging_base_url:, app_base_url:) ⇒ LoggingClient
constructor
A new instance of LoggingClient.
-
#install ⇒ Object
(also: #start)
Install the logging integration.
- #list ⇒ Object
- #on_change(name = nil, &block) ⇒ Object
- #register_adapter(adapter) ⇒ Object
Constructor Details
#initialize(parent, manage:, metrics:, logging_base_url:, app_base_url:) ⇒ LoggingClient
Returns a new instance of LoggingClient.
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/smplkit/logging/client.rb', line 13 def initialize(parent, manage:, metrics:, logging_base_url:, app_base_url:) @parent = parent @manage = manage @metrics = metrics @logging_base_url = logging_base_url @app_base_url = app_base_url @adapters = [] @installed = false @global_listeners = [] @key_listeners = Hash.new { |h, k| h[k] = [] } @lock = Mutex.new end |
Instance Method Details
#_close ⇒ Object
85 86 87 88 |
# File 'lib/smplkit/logging/client.rb', line 85 def _close @adapters.each(&:uninstall_hook) if @installed @installed = false end |
#adapters ⇒ Object
58 59 60 |
# File 'lib/smplkit/logging/client.rb', line 58 def adapters @adapters.dup end |
#delete(name) ⇒ Object
70 71 72 |
# File 'lib/smplkit/logging/client.rb', line 70 def delete(name) @manage.loggers.delete(name) end |
#get(name) ⇒ Object
62 63 64 |
# File 'lib/smplkit/logging/client.rb', line 62 def get(name) @manage.loggers.get(name) end |
#install ⇒ Object Also known as: start
Install the logging integration.
Auto-loads the stdlib-logger adapter (always) and the semantic-logger adapter (when the gem is available). Customer explicit registration via register_adapter wins over auto-load.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/smplkit/logging/client.rb', line 31 def install return self if @installed auto_load_adapters if @adapters.empty? @adapters.each do |adapter| discovered = adapter.discover discovered.each { |(name, _explicit, effective)| observe_logger(adapter, name, effective) } adapter.install_hook { |name, _explicit, effective| observe_logger(adapter, name, effective) } end @ws_manager = @parent._ensure_ws @ws_manager.on("logger_changed") { |data| handle_logger_changed(data) } @installed = true self end |
#list ⇒ Object
66 67 68 |
# File 'lib/smplkit/logging/client.rb', line 66 def list @manage.loggers.list end |
#on_change(name = nil, &block) ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/smplkit/logging/client.rb', line 74 def on_change(name = nil, &block) raise ArgumentError, "on_change requires a block" unless block if name.nil? @global_listeners << block else @key_listeners[Normalize.normalize_logger_name(name)] << block end block end |