inst-wide-logger 1.0.1 → 1.1.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 +4 -4
- data/.rubocop.yml +15 -0
- data/CHANGELOG.md +15 -0
- data/lib/wide_logger/railtie.rb +14 -0
- data/lib/wide_logger/version.rb +1 -1
- data/lib/wide_logger/wide_logger.rb +41 -11
- data/lib/wide_logger.rb +2 -1
- data/wide_logger.gemspec +1 -0
- metadata +18 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5d8e347b46de99e1474ad68d526f5f8666742c9bcd24a018a06ccf610b597e96
|
|
4
|
+
data.tar.gz: e7c08206a9747b4a5c0e8ae1cdf768eb45331f5ca12fdfbd18e92c8a6365337f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ba10555e751477d537c1b9f115f02fcfa9402aaf13e90dae7a48f86b4a8eaed08f1889757da3f4f324f0f97a6705b22e4fc1e9b87ea31db7efdb19cc72bfb7e4
|
|
7
|
+
data.tar.gz: eff67e4ac3307bc48bb9260ffb589b86c3689e2807eea92c1af04d61b9ab0acacd1fbb1f6bb9a88f8e8f16a896d3d669fb02ce736af632a2af791f47d04dcc53
|
data/.rubocop.yml
ADDED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.1.0] - 2026-04-01
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `WideLogger::WrapOptions` struct for structured options (`metadata`, `error_metadata`, `message`)
|
|
8
|
+
- Message template support in `wrap` with `%{variable}` interpolation from logging context
|
|
9
|
+
- Error metadata support: additional metadata added to context only on exception
|
|
10
|
+
- Configurable default message templates per event type via `config.wide_logger.default_messages` or `WideLogger.default_messages`
|
|
11
|
+
- `railties` as a runtime dependency
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- `WideLogger.wrap` now accepts `opts:` keyword argument (`WrapOptions`) instead of `metadata:`
|
|
16
|
+
- Event types are now configurable via Railtie (`config.wide_logger.event_types`) or `WideLogger.custom_event_types`
|
|
17
|
+
|
|
3
18
|
## [1.0.1] - 2026-04-01
|
|
4
19
|
|
|
5
20
|
### Added
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module WideLogger
|
|
4
|
+
class Railtie < Rails::Railtie
|
|
5
|
+
config.wide_logger = ActiveSupport::OrderedOptions.new
|
|
6
|
+
config.wide_logger.event_types = {}
|
|
7
|
+
config.wide_logger.default_messages = {}
|
|
8
|
+
|
|
9
|
+
initializer 'wide_logger.configure' do |app|
|
|
10
|
+
WideLogger.custom_event_types = app.config.wide_logger.event_types
|
|
11
|
+
WideLogger.default_messages = app.config.wide_logger.default_messages
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
data/lib/wide_logger/version.rb
CHANGED
|
@@ -1,27 +1,53 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module WideLogger
|
|
4
|
-
|
|
5
|
-
web_request: '
|
|
4
|
+
DEFAULT_EVENT_TYPES = {
|
|
5
|
+
web_request: 'canonical_web_request_summary',
|
|
6
6
|
job: 'canonical_job_summary',
|
|
7
7
|
sqs: 'canonical_sqs_summary'
|
|
8
8
|
}.freeze
|
|
9
9
|
|
|
10
|
+
WrapOptions = Struct.new(:metadata, :error_metadata, :message, keyword_init: true) do
|
|
11
|
+
def initialize(metadata: {}, error_metadata: {}, message: nil)
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
10
16
|
class << self
|
|
11
|
-
def
|
|
12
|
-
|
|
17
|
+
def custom_event_types=(value)
|
|
18
|
+
@custom_event_types = value
|
|
19
|
+
@event_types = nil
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def custom_event_types
|
|
23
|
+
@custom_event_types ||= {}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def event_types
|
|
27
|
+
@event_types ||= DEFAULT_EVENT_TYPES.merge(custom_event_types).freeze
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
attr_writer :default_messages
|
|
31
|
+
|
|
32
|
+
def default_messages
|
|
33
|
+
@default_messages ||= {}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def wrap(type:, opts: WrapOptions.new)
|
|
37
|
+
event_type = event_types.fetch(type)
|
|
13
38
|
|
|
14
39
|
Rails.logger.add_metadata(
|
|
15
40
|
log_event_type: event_type,
|
|
16
|
-
**metadata
|
|
41
|
+
**opts.metadata
|
|
17
42
|
)
|
|
18
43
|
|
|
19
44
|
result = yield
|
|
20
45
|
|
|
21
|
-
emit_event(event_type)
|
|
46
|
+
emit_event(event_type, opts.message || default_messages[type])
|
|
22
47
|
result
|
|
23
48
|
rescue StandardError => e
|
|
24
|
-
|
|
49
|
+
Rails.logger.add_metadata(**opts.error_metadata) unless opts.error_metadata.empty?
|
|
50
|
+
emit_event(event_type, nil, e)
|
|
25
51
|
raise
|
|
26
52
|
ensure
|
|
27
53
|
Rails.logger.clear_metadata!
|
|
@@ -33,11 +59,15 @@ module WideLogger
|
|
|
33
59
|
|
|
34
60
|
private
|
|
35
61
|
|
|
36
|
-
def emit_event(event_type,
|
|
37
|
-
if
|
|
38
|
-
Rails.logger.error("#{event_type} failed with error: #{
|
|
62
|
+
def emit_event(event_type, message, error = nil)
|
|
63
|
+
if error
|
|
64
|
+
Rails.logger.error("#{event_type} failed with error: #{error.message}")
|
|
39
65
|
else
|
|
40
|
-
|
|
66
|
+
if message
|
|
67
|
+
Rails.logger.info(message % Rails.logger.current_metadata)
|
|
68
|
+
else
|
|
69
|
+
Rails.logger.info(event_type)
|
|
70
|
+
end
|
|
41
71
|
end
|
|
42
72
|
end
|
|
43
73
|
end
|
data/lib/wide_logger.rb
CHANGED
|
@@ -3,4 +3,5 @@
|
|
|
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/dev_json_formatter'
|
|
6
|
+
require_relative 'wide_logger/dev_json_formatter'
|
|
7
|
+
require_relative 'wide_logger/railtie' if defined?(Rails::Railtie)
|
data/wide_logger.gemspec
CHANGED
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.0
|
|
4
|
+
version: 1.1.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-
|
|
11
|
+
date: 2026-04-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: paul_bunyan
|
|
@@ -24,6 +24,20 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '2.1'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: railties
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '6.0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '6.0'
|
|
27
41
|
description:
|
|
28
42
|
email:
|
|
29
43
|
- zoltan.hegedus@instructure.com
|
|
@@ -32,6 +46,7 @@ extensions: []
|
|
|
32
46
|
extra_rdoc_files: []
|
|
33
47
|
files:
|
|
34
48
|
- ".rspec"
|
|
49
|
+
- ".rubocop.yml"
|
|
35
50
|
- CHANGELOG.md
|
|
36
51
|
- Gemfile
|
|
37
52
|
- README.md
|
|
@@ -39,6 +54,7 @@ files:
|
|
|
39
54
|
- lib/inst-wide-logger.rb
|
|
40
55
|
- lib/wide_logger.rb
|
|
41
56
|
- lib/wide_logger/dev_json_formatter.rb
|
|
57
|
+
- lib/wide_logger/railtie.rb
|
|
42
58
|
- lib/wide_logger/version.rb
|
|
43
59
|
- lib/wide_logger/wide_logger.rb
|
|
44
60
|
- wide_logger.gemspec
|