inst-wide-logger 1.2.0 → 1.4.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: 48eed6b5cb7f9b36589aaf6aac78b8ab88a7dcb6e44cfd618012838816312cb5
4
- data.tar.gz: faa3e37c7f0537513f174f7f1c8bcd374de6827a7bcff86bb23cd4f1a40f3cd3
3
+ metadata.gz: 5cca64dc7c3b9da08034a6f4e756231e19a58b09a984941145c645104ff1a9db
4
+ data.tar.gz: e48e15dbd7455623b7799a0df8a6c4c951b675c049a8a0af928c30213e4ad680
5
5
  SHA512:
6
- metadata.gz: 2950404c977ce06feb0360d6c878b60345c169b458beebb087815df10d2599c945ac6751dca23f349cdf716aa98144945e2116efe17db12fc12364abd667873a
7
- data.tar.gz: f8708a57eaa0d58bf04049382139a9a49e6a4ce59ae446b18cbb7c6e6fbed331a2d697baf5051e6e9ace4a3a4328d623bde9599013458e9684b47ccd046f28a4
6
+ metadata.gz: d0afc0628234eb1b95041550643cedbe610e98086ef8c8f9b1f31b8373105df15fdedf644b26b057f1546090282523df45f7f6a27c5a42e35e6bcfad31a49b7c
7
+ data.tar.gz: 1c0275722f28c8daf2c7d498987e9cf059ba223cab084cca9b2973beac4e4213a0288e88c90d33c653f5f5741c7209dff2206256e8f7d0df85f2a31fb1e66ed4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.4.0] - 2026-04-23
4
+
5
+ ### Added
6
+
7
+ - `WideLogger::FlipperSubscriber` — an `ActiveSupport::LogSubscriber` that captures Flipper feature flag checks and adds them to the WideLogger context under the `feature_flags` key. Opt-in via `require 'wide_logger/flipper_subscriber'`; the consuming app attaches it, e.g. `WideLogger::FlipperSubscriber.attach_to Flipper::InstrumentationNamespace`.
8
+
9
+ ## [1.3.0] - 2026-04-20
10
+
11
+ ### Added
12
+
13
+ - `WideLogger::DevFormatter` with an `include_json:` constructor option (default `true`) to control whether the JSON context is appended to each log entry
14
+
15
+ ### Deprecated
16
+
17
+ - `WideLogger::DevJsonFormatter` — use `WideLogger::DevFormatter` instead. The alias will be removed in 2.0.
18
+
3
19
  ## [1.2.0] - 2026-04-16
4
20
 
5
21
  ### Added
data/README.md CHANGED
@@ -33,12 +33,20 @@ WideLogger.wrap(type: :web_request, metadata: { additional_context: @context })
33
33
  end
34
34
  ```
35
35
 
36
- Optionally, you can use WideLogger:DevJsonFormatter to have log entries in the following format:
36
+ Optionally, you can use `WideLogger::DevFormatter` to have log entries in the following format:
37
37
 
38
38
  ```text
39
39
  <timestamp> <message> <context in JSON format>
40
40
  ```
41
41
 
42
+ The formatter accepts an `include_json:` keyword (default `true`). Set it to `false` to suppress the JSON context and emit only `<timestamp> <message>`:
43
+
44
+ ```ruby
45
+ config.logging.formatter = WideLogger::DevFormatter.new(include_json: false)
46
+ ```
47
+
48
+ > `WideLogger::DevJsonFormatter` is kept as a deprecated alias of `DevFormatter` for backwards compatibility and will be removed in 2.0.
49
+
42
50
  ## Development
43
51
 
44
52
  After checking out the repo, run `bundle install` to install dependencies. Then, run `rake spec` to run the tests.
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/deprecation'
4
+
5
+ module WideLogger
6
+ class DevFormatter < PaulBunyan::JSONFormatter
7
+ def initialize(include_json: true)
8
+ super()
9
+ @include_json = include_json
10
+ end
11
+
12
+ def call(severity, time, progname, msg)
13
+ prefix = time.utc.strftime(DATETIME_FORMAT) + ' ' + msg.to_s
14
+ return prefix + "\n" unless @include_json
15
+
16
+ prefix + ' ' + super
17
+ end
18
+
19
+ private
20
+
21
+ def merge_metadata_and_message(metadata, message)
22
+ super.except('message', 'ts').sort_by { |key, _| key.to_s }.to_h
23
+ end
24
+ end
25
+
26
+ DEPRECATOR = ActiveSupport::Deprecation.new('2.0', 'WideLogger')
27
+
28
+ class DevJsonFormatter < DevFormatter
29
+ def initialize(*args, **kwargs)
30
+ DEPRECATOR.warn(
31
+ 'WideLogger::DevJsonFormatter is deprecated and will be removed in 2.0. ' \
32
+ 'Use WideLogger::DevFormatter instead.'
33
+ )
34
+ super
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WideLogger
4
+ class FlipperSubscriber < ActiveSupport::LogSubscriber
5
+ def feature_operation(event)
6
+ feature_name = event.payload[:feature_name]
7
+ result = event.payload[:result]
8
+ return if feature_name.nil?
9
+
10
+ feature_flags = Rails.logger.current_metadata[:feature_flags] || {}
11
+ feature_flags[feature_name.to_sym] = result
12
+
13
+ WideLogger.add_context(feature_flags:)
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WideLogger
4
- VERSION = "1.2.0"
4
+ VERSION = '1.4.0'
5
5
  end
data/lib/wide_logger.rb CHANGED
@@ -4,5 +4,5 @@ require 'paul_bunyan'
4
4
  require_relative 'wide_logger/version'
5
5
  require_relative 'wide_logger/wide_logger'
6
6
  require_relative 'wide_logger/downgrading_to_debug_logger'
7
- require_relative 'wide_logger/dev_json_formatter'
7
+ require_relative 'wide_logger/dev_formatter'
8
8
  require_relative 'wide_logger/railtie' if defined?(Rails::Railtie)
data/wide_logger.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ['lib']
28
28
 
29
+ spec.add_dependency 'activesupport', '>= 6.0'
29
30
  spec.add_dependency 'paul_bunyan', '~> 2.1'
30
31
  spec.add_dependency 'railties', '>= 6.0'
31
32
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-wide-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.4.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-16 00:00:00.000000000 Z
11
+ date: 2026-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: paul_bunyan
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,8 +67,9 @@ files:
53
67
  - Rakefile
54
68
  - lib/inst-wide-logger.rb
55
69
  - lib/wide_logger.rb
56
- - lib/wide_logger/dev_json_formatter.rb
70
+ - lib/wide_logger/dev_formatter.rb
57
71
  - lib/wide_logger/downgrading_to_debug_logger.rb
72
+ - lib/wide_logger/flipper_subscriber.rb
58
73
  - lib/wide_logger/railtie.rb
59
74
  - lib/wide_logger/version.rb
60
75
  - lib/wide_logger/wide_logger.rb
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module WideLogger
4
- class DevJsonFormatter < PaulBunyan::JSONFormatter
5
- def call(severity, time, progname, msg)
6
- time.utc.strftime(DATETIME_FORMAT) + ' ' + msg.to_s + ' ' + super
7
- end
8
-
9
- private
10
-
11
- def merge_metadata_and_message(metadata, message)
12
- super.except('message', 'ts').sort_by { |key, _| key.to_s }.to_h
13
- end
14
- end
15
- end