inst-wide-logger 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d8e347b46de99e1474ad68d526f5f8666742c9bcd24a018a06ccf610b597e96
4
- data.tar.gz: e7c08206a9747b4a5c0e8ae1cdf768eb45331f5ca12fdfbd18e92c8a6365337f
3
+ metadata.gz: 48eed6b5cb7f9b36589aaf6aac78b8ab88a7dcb6e44cfd618012838816312cb5
4
+ data.tar.gz: faa3e37c7f0537513f174f7f1c8bcd374de6827a7bcff86bb23cd4f1a40f3cd3
5
5
  SHA512:
6
- metadata.gz: ba10555e751477d537c1b9f115f02fcfa9402aaf13e90dae7a48f86b4a8eaed08f1889757da3f4f324f0f97a6705b22e4fc1e9b87ea31db7efdb19cc72bfb7e4
7
- data.tar.gz: eff67e4ac3307bc48bb9260ffb589b86c3689e2807eea92c1af04d61b9ab0acacd1fbb1f6bb9a88f8e8f16a896d3d669fb02ce736af632a2af791f47d04dcc53
6
+ metadata.gz: 2950404c977ce06feb0360d6c878b60345c169b458beebb087815df10d2599c945ac6751dca23f349cdf716aa98144945e2116efe17db12fc12364abd667873a
7
+ data.tar.gz: f8708a57eaa0d58bf04049382139a9a49e6a4ce59ae446b18cbb7c6e6fbed331a2d697baf5051e6e9ace4a3a4328d623bde9599013458e9684b47ccd046f28a4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.2.0] - 2026-04-16
4
+
5
+ ### Added
6
+
7
+ - `WideLogger::DowngradingToDebugLogger` - a logger wrapper that downgrades log levels at or below a configurable threshold to `debug`
8
+ - Nested metadata interpolation in message templates using dot notation (e.g. `%<job.tag>s`)
9
+
3
10
  ## [1.1.0] - 2026-04-01
4
11
 
5
12
  ### Added
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'delegate'
4
+
5
+ module WideLogger
6
+ class DowngradingToDebugLogger < SimpleDelegator
7
+ LEVELS = %i[info warn error fatal unknown].freeze
8
+
9
+ def initialize(logger, threshold:)
10
+ super(logger)
11
+ threshold_index = LEVELS.index(threshold)
12
+ LEVELS[0..threshold_index].each do |level|
13
+ define_singleton_method(level) do |msg = nil, &block|
14
+ __getobj__.debug(msg, &block)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WideLogger
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.0"
5
5
  end
@@ -7,6 +7,8 @@ module WideLogger
7
7
  sqs: 'canonical_sqs_summary'
8
8
  }.freeze
9
9
 
10
+ INTERPOLATION_PATTERN = /%(?:\{([^}]+)\}|<([^>]+)>([a-zA-Z]))/
11
+
10
12
  WrapOptions = Struct.new(:metadata, :error_metadata, :message, keyword_init: true) do
11
13
  def initialize(metadata: {}, error_metadata: {}, message: nil)
12
14
  super
@@ -62,12 +64,29 @@ module WideLogger
62
64
  def emit_event(event_type, message, error = nil)
63
65
  if error
64
66
  Rails.logger.error("#{event_type} failed with error: #{error.message}")
67
+ elsif message
68
+ Rails.logger.info(interpolate_message(message))
69
+ else
70
+ Rails.logger.info(event_type)
71
+ end
72
+ end
73
+
74
+ def interpolate_message(message)
75
+ metadata = Rails.logger.current_metadata
76
+ message.gsub(INTERPOLATION_PATTERN) do |match|
77
+ value = resolve_key(metadata, $1 || $2)
78
+ next match if value.nil?
79
+
80
+ $1 ? value.to_s : format("%#{$3}", value)
81
+ end
82
+ end
83
+
84
+ def resolve_key(metadata, key)
85
+ if key.include?('.')
86
+ keys = key.split('.').map(&:to_sym)
87
+ metadata.dig(*keys)
65
88
  else
66
- if message
67
- Rails.logger.info(message % Rails.logger.current_metadata)
68
- else
69
- Rails.logger.info(event_type)
70
- end
89
+ metadata[key.to_sym]
71
90
  end
72
91
  end
73
92
  end
data/lib/wide_logger.rb CHANGED
@@ -3,5 +3,6 @@
3
3
  require 'paul_bunyan'
4
4
  require_relative 'wide_logger/version'
5
5
  require_relative 'wide_logger/wide_logger'
6
+ require_relative 'wide_logger/downgrading_to_debug_logger'
6
7
  require_relative 'wide_logger/dev_json_formatter'
7
8
  require_relative 'wide_logger/railtie' if defined?(Rails::Railtie)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-wide-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zoltan Hegedus
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-09 00:00:00.000000000 Z
11
+ date: 2026-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paul_bunyan
@@ -54,6 +54,7 @@ files:
54
54
  - lib/inst-wide-logger.rb
55
55
  - lib/wide_logger.rb
56
56
  - lib/wide_logger/dev_json_formatter.rb
57
+ - lib/wide_logger/downgrading_to_debug_logger.rb
57
58
  - lib/wide_logger/railtie.rb
58
59
  - lib/wide_logger/version.rb
59
60
  - lib/wide_logger/wide_logger.rb