legion-logging 1.3.0 → 1.3.2

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: b61c337aaf2f09bc9cf2ae34db008430f232d7d585044fa4cf813162f1db6b69
4
- data.tar.gz: 453b54b4571861800273a345dd1c7142b742daaddb05a3a30e8b48d21c5c7575
3
+ metadata.gz: d2284e01a8b8c373629f5c7aaf8a648c06dd706a4a6d516cdc27a80ce63eb631
4
+ data.tar.gz: 6398739b5097e7cc59d2683e70eefbec5a305e0f85707a40f62ebcbd147176df
5
5
  SHA512:
6
- metadata.gz: a819edf335d1c5c38bb431ac5368af501ffefed138c31a32f55bde4eb2ce155b98c26ef9973c798b98ced32330e48e887be3a711d86db6c011651c5ff7c485af
7
- data.tar.gz: d1bf28077c9fc1de289cbf936ce0cea292ea6ca380dc4d6ee2294d8db0a30fac22ef571794b9c1881d8f743b32dae783ffc772114250d50dfaf2e54afa046d3b
6
+ metadata.gz: bd5bbabd136edfc7079db6e7ff1a804839a9513e135f2594b0cfc43a17573d9aa0cf30f0d9a3c47e4e0fabf91cefb3772394076e98767b44adee9edaa940384f
7
+ data.tar.gz: a2fec71358fc96100f3fddae8002b762aad9381c5a030eec3c60b6d282f081204e6699d8f34a8a19901c104ae49d3ea708eca32bcccc793b265c50faad328c16
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # Legion::Logging Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [1.3.2] - 2026-03-22
4
+
5
+ ### Added
6
+ - `Legion::Logging::Helper` module: injectable `log` mixin for LEX extensions
7
+ - Derives logger tags from `segments`, `lex_filename`, or class name (in priority order)
8
+ - Passes through `settings[:logger]` config when available
9
+ - Allows LEX gems to use `legion-logging` directly instead of requiring the full LegionIO framework
10
+
11
+ ## [1.3.1] - 2026-03-22
12
+
13
+ ### Fixed
14
+ - Replace `Legion::Settings[:logging, :shipper, ...]` multi-arg bracket calls with `Legion::Settings.dig(...)` — `Settings#[]` only accepts 1 argument, causing `ArgumentError: wrong number of arguments (given 3, expected 1)` on boot
15
+ - Affected: `logging.rb` (async buffer_size), `shipper.rb` (5 calls), `redactor.rb`, `file_transport.rb`, `http_transport.rb` (2 calls)
4
16
 
5
17
  ## [1.3.0] - 2026-03-22
6
18
 
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Logging
5
+ module Helper
6
+ def log
7
+ return @log unless @log.nil?
8
+
9
+ logger_hash = if respond_to?(:segments)
10
+ { lex_segments: Array(segments) }
11
+ else
12
+ { lex: derive_log_tag }
13
+ end
14
+
15
+ if respond_to?(:settings) && settings.is_a?(Hash) && settings.key?(:logger)
16
+ ls = settings[:logger]
17
+ logger_hash[:level] = ls[:level] if ls.key?(:level)
18
+ logger_hash[:log_file] = ls[:log_file] if ls.key?(:log_file)
19
+ logger_hash[:trace] = ls[:trace] if ls.key?(:trace)
20
+ logger_hash[:extended] = ls[:extended] if ls.key?(:extended)
21
+ end
22
+
23
+ @log = Legion::Logging::Logger.new(**logger_hash)
24
+ end
25
+
26
+ private
27
+
28
+ def derive_log_tag
29
+ if respond_to?(:lex_filename)
30
+ fname = lex_filename
31
+ return fname.is_a?(Array) ? fname.first : fname
32
+ end
33
+
34
+ name = respond_to?(:ancestors) ? ancestors.first.to_s : self.class.to_s
35
+ parts = name.split('::')
36
+ ext_idx = parts.index('Extensions')
37
+ target = if ext_idx && parts[ext_idx + 1]
38
+ parts[ext_idx + 1]
39
+ else
40
+ parts.last
41
+ end
42
+ target.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
43
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
44
+ .downcase
45
+ end
46
+ end
47
+ end
48
+ end
@@ -60,7 +60,7 @@ module Legion
60
60
  def custom_patterns
61
61
  return {} unless defined?(Legion::Settings)
62
62
 
63
- raw = Legion::Settings[:logging, :redactor, :custom_patterns]
63
+ raw = Legion::Settings.dig(:logging, :redactor, :custom_patterns)
64
64
  return {} unless raw.is_a?(Hash)
65
65
 
66
66
  raw.each_with_object({}) do |(name, pattern_str), acc|
@@ -33,7 +33,7 @@ module Legion
33
33
  def settings_path
34
34
  return nil unless defined?(Legion::Settings)
35
35
 
36
- Legion::Settings[:logging, :shipper, :file, :path]
36
+ Legion::Settings.dig(:logging, :shipper, :file, :path)
37
37
  end
38
38
  end
39
39
  end
@@ -64,13 +64,13 @@ module Legion
64
64
  def auth_token
65
65
  return nil unless defined?(Legion::Settings)
66
66
 
67
- Legion::Settings[:logging, :shipper, :auth_token]
67
+ Legion::Settings.dig(:logging, :shipper, :auth_token)
68
68
  end
69
69
 
70
70
  def resolve_endpoint
71
71
  return nil unless defined?(Legion::Settings)
72
72
 
73
- Legion::Settings[:logging, :shipper, :endpoint]
73
+ Legion::Settings.dig(:logging, :shipper, :endpoint)
74
74
  end
75
75
  end
76
76
  end
@@ -64,7 +64,7 @@ module Legion
64
64
  def enabled?
65
65
  return false unless defined?(Legion::Settings)
66
66
 
67
- Legion::Settings[:logging, :shipper, :enabled] == true
67
+ Legion::Settings.dig(:logging, :shipper, :enabled) == true
68
68
  end
69
69
 
70
70
  private
@@ -103,26 +103,26 @@ module Legion
103
103
  def transport_type
104
104
  return :file unless defined?(Legion::Settings)
105
105
 
106
- key = Legion::Settings[:logging, :shipper, :transport]
106
+ key = Legion::Settings.dig(:logging, :shipper, :transport)
107
107
  key ? key.to_sym : :file
108
108
  end
109
109
 
110
110
  def batch_size
111
111
  return 100 unless defined?(Legion::Settings)
112
112
 
113
- Legion::Settings[:logging, :shipper, :batch_size] || 100
113
+ Legion::Settings.dig(:logging, :shipper, :batch_size) || 100
114
114
  end
115
115
 
116
116
  def flush_interval
117
117
  return 5 unless defined?(Legion::Settings)
118
118
 
119
- Legion::Settings[:logging, :shipper, :flush_interval] || 5
119
+ Legion::Settings.dig(:logging, :shipper, :flush_interval) || 5
120
120
  end
121
121
 
122
122
  def minimum_level
123
123
  return 'warn' unless defined?(Legion::Settings)
124
124
 
125
- levels = Legion::Settings[:logging, :shipper, :levels]
125
+ levels = Legion::Settings.dig(:logging, :shipper, :levels)
126
126
  return 'warn' unless levels.is_a?(Array) && !levels.empty?
127
127
 
128
128
  levels.min_by { |l| LEVEL_ORDER.index(l.to_s) || 99 }.to_s
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Logging
5
- VERSION = '1.3.0'
5
+ VERSION = '1.3.2'
6
6
  end
7
7
  end
@@ -7,6 +7,7 @@ require 'legion/logging/builder'
7
7
  require 'legion/logging/hooks'
8
8
  require 'legion/logging/event_builder'
9
9
  require 'legion/logging/async_writer'
10
+ require 'legion/logging/helper'
10
11
 
11
12
  require 'json'
12
13
  require 'logger'
@@ -35,7 +36,7 @@ module Legion
35
36
  @color = format != :json && (options[:color] || (options[:color].nil? && options[:log_file].nil?))
36
37
  if async
37
38
  buffer = if defined?(Legion::Settings)
38
- Legion::Settings[:logging, :async, :buffer_size] || 10_000
39
+ Legion::Settings.dig(:logging, :async, :buffer_size) || 10_000
39
40
  else
40
41
  10_000
41
42
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -60,6 +60,7 @@ files:
60
60
  - lib/legion/logging/async_writer.rb
61
61
  - lib/legion/logging/builder.rb
62
62
  - lib/legion/logging/event_builder.rb
63
+ - lib/legion/logging/helper.rb
63
64
  - lib/legion/logging/hooks.rb
64
65
  - lib/legion/logging/logger.rb
65
66
  - lib/legion/logging/methods.rb