Class: Smplkit::Logging::Adapters::SemanticLoggerAdapter
- Defined in:
- lib/smplkit/logging/adapters/semantic_logger_adapter.rb
Overview
Adapter for the semantic_logger gem.
SemanticLogger has its own internal logger registry and its own level system that natively includes TRACE — a 1-to-1 map across all seven smplkit canonical levels.
Instance Method Summary collapse
- #apply_level(logger_name, level) ⇒ Object
- #discover ⇒ Object
-
#initialize ⇒ SemanticLoggerAdapter
constructor
A new instance of SemanticLoggerAdapter.
- #install_hook(&on_new_logger) ⇒ Object
- #name ⇒ Object
- #track(name, logger) ⇒ Object
- #uninstall_hook ⇒ Object
Constructor Details
#initialize ⇒ SemanticLoggerAdapter
Returns a new instance of SemanticLoggerAdapter.
19 20 21 22 23 24 |
# File 'lib/smplkit/logging/adapters/semantic_logger_adapter.rb', line 19 def initialize super @loggers = Concurrent::Hash.new @on_new = nil @uninstalled = false end |
Instance Method Details
#apply_level(logger_name, level) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/smplkit/logging/adapters/semantic_logger_adapter.rb', line 47 def apply_level(logger_name, level) logger = @loggers[logger_name] return unless logger return unless logger.respond_to?(:level=) logger.level = Levels.smpl_level_to_semantic(level) end |
#discover ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/smplkit/logging/adapters/semantic_logger_adapter.rb', line 34 def discover rows = [] # Default named loggers SemanticLogger creates: itself + the global # one. Customers add more via +SemanticLogger[ClassOrName]+. all_loggers.each do |name, logger| level = logger.respond_to?(:level) ? logger.level : nil smpl_level = Levels.semantic_level_to_smpl(level) rows << [name, smpl_level, smpl_level] end rows.uniq { |row| row[0] } end |
#install_hook(&on_new_logger) ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/smplkit/logging/adapters/semantic_logger_adapter.rb', line 55 def install_hook(&on_new_logger) @on_new = on_new_logger @uninstalled = false # SemanticLogger's API for new-logger interception varies across # versions. The Ruby SDK initial release relies on +discover+ being # called periodically — full prepend-based interception will be # filled in once tested against the targeted +semantic_logger+ # version pinned in dev deps. (See ISSUES.md.) end |
#name ⇒ Object
26 27 28 |
# File 'lib/smplkit/logging/adapters/semantic_logger_adapter.rb', line 26 def name "semantic-logger" end |
#track(name, logger) ⇒ Object
30 31 32 |
# File 'lib/smplkit/logging/adapters/semantic_logger_adapter.rb', line 30 def track(name, logger) @loggers[name] = logger end |
#uninstall_hook ⇒ Object
65 66 67 |
# File 'lib/smplkit/logging/adapters/semantic_logger_adapter.rb', line 65 def uninstall_hook @uninstalled = true end |