lumberjack 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 +4 -4
- data/CHANGELOG.md +17 -0
- data/VERSION +1 -1
- data/lib/lumberjack/log_entry.rb +35 -3
- data/lib/lumberjack/logger.rb +10 -3
- data/lib/lumberjack/tagged_logger_support.rb +21 -11
- data/lumberjack.gemspec +6 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9350195577ae682b1f668a183aed2c0e1635e2bad8abb9af751c9f11f4b33fee
|
4
|
+
data.tar.gz: 3ebedf23e6eb462df564030b332ee9fd0f71d9198d6276480405ca21ce28d3f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c8230a0536fe98b8f817c275a5cc6e9d5764ea5dab8f0b1b92e1c274280c1528cebfb94767538eecf886240dc6a3fa6fe6adededffaac38815577bcfb739675
|
7
|
+
data.tar.gz: 3e64d451e6aa85298c3a5877bcfcef109381acd09553a250861886528ea352e5f5194db323cf0c253f2018dc130f4323f21ed1d51753cfcad7c3dbb09390affc
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## 1.3.2
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
- Fixed `NoMethodError` when setting the device via the `Lumberjack::Logger#device=` method.
|
12
|
+
|
13
|
+
## 1.3.1
|
14
|
+
|
15
|
+
### Added
|
16
|
+
|
17
|
+
- Added `Lumberjack::Logger#context` method to set up a context block for the logger. This is the same as calling `Lumberjack::Logger#tag` with an empty hash.
|
18
|
+
- Log entries now remove empty tag values so they don't have to be removed downstream.
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
|
22
|
+
- ActiveSupport::TaggedLogger now calls `Lumberjack::Logger#tag_globally` to prevent deprecation warnings.
|
23
|
+
|
7
24
|
## 1.3.0
|
8
25
|
|
9
26
|
### Added
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.2
|
data/lib/lumberjack/log_entry.rb
CHANGED
@@ -26,9 +26,9 @@ module Lumberjack
|
|
26
26
|
@progname = progname
|
27
27
|
@pid = pid
|
28
28
|
# backward compatibility with 1.0 API where the last argument was the unit of work id
|
29
|
-
@tags = if tags.
|
30
|
-
tags
|
31
|
-
|
29
|
+
@tags = if tags.is_a?(Hash)
|
30
|
+
compact_tags(tags)
|
31
|
+
elsif !tags.nil?
|
32
32
|
{UNIT_OF_WORK_ID => tags}
|
33
33
|
end
|
34
34
|
end
|
@@ -80,5 +80,37 @@ module Lumberjack
|
|
80
80
|
tags&.each { |name, value| tags_string << " #{name}:#{value.inspect}" }
|
81
81
|
tags_string
|
82
82
|
end
|
83
|
+
|
84
|
+
def compact_tags(tags)
|
85
|
+
delete_keys = nil
|
86
|
+
compacted_keys = nil
|
87
|
+
|
88
|
+
tags.each do |key, value|
|
89
|
+
if value.nil? || value == ""
|
90
|
+
delete_keys ||= []
|
91
|
+
delete_keys << key
|
92
|
+
elsif value.is_a?(Hash)
|
93
|
+
compacted_value = compact_tags(value)
|
94
|
+
if compacted_value.empty?
|
95
|
+
delete_keys ||= []
|
96
|
+
delete_keys << key
|
97
|
+
elsif !value.equal?(compacted_value)
|
98
|
+
compacted_keys ||= []
|
99
|
+
compacted_keys << [key, compacted_value]
|
100
|
+
end
|
101
|
+
elsif value.is_a?(Array) && value.empty?
|
102
|
+
delete_keys ||= []
|
103
|
+
delete_keys << key
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
return tags if delete_keys.nil? && compacted_keys.nil?
|
108
|
+
|
109
|
+
tags = tags.dup
|
110
|
+
delete_keys&.each { |key| tags.delete(key) }
|
111
|
+
compacted_keys&.each { |key, value| tags[key] = value }
|
112
|
+
|
113
|
+
tags
|
114
|
+
end
|
83
115
|
end
|
84
116
|
end
|
data/lib/lumberjack/logger.rb
CHANGED
@@ -96,9 +96,7 @@ module Lumberjack
|
|
96
96
|
# @param [Lumberjack::Device] device The new logging device.
|
97
97
|
# @return [void]
|
98
98
|
def device=(device)
|
99
|
-
@logdev =
|
100
|
-
open_device(device, options)
|
101
|
-
end
|
99
|
+
@logdev = device.nil? ? nil : open_device(device, {})
|
102
100
|
end
|
103
101
|
|
104
102
|
# Get the timestamp format on the device if it has one.
|
@@ -515,6 +513,15 @@ module Lumberjack
|
|
515
513
|
end
|
516
514
|
end
|
517
515
|
|
516
|
+
# Set up a context block for the logger. All tags added within the block will be cleared when
|
517
|
+
# the block exits.
|
518
|
+
#
|
519
|
+
def context(&block)
|
520
|
+
thread_tags = thread_local_value(:lumberjack_logger_tags)&.dup
|
521
|
+
thread_tags ||= {}
|
522
|
+
push_thread_local_value(:lumberjack_logger_tags, thread_tags, &block)
|
523
|
+
end
|
524
|
+
|
518
525
|
# Add global tags to the logger that will appear on all log entries.
|
519
526
|
#
|
520
527
|
# @param [Hash] tags The tags to set.
|
@@ -38,19 +38,18 @@ module Lumberjack
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# Compatibility with ActiveSupport::TaggedLogging which only supports adding tags as strings.
|
41
|
-
#
|
42
|
-
# Otherwise it will be appended to a list named "tagged".
|
41
|
+
# Tags will be added to the "tagged" key in the logger's tags hash as an array.
|
43
42
|
def tagged(*tags, &block)
|
44
|
-
|
45
|
-
tags.flatten.
|
46
|
-
|
47
|
-
tag_hash["tagged"] = tagged_values + [tag]
|
43
|
+
tagged_values = Array(tag_value("tagged"))
|
44
|
+
flattened_tags = tags.flatten.collect(&:to_s).reject do |tag|
|
45
|
+
tag.respond_to?(:blank?) ? tag.blank? : tag.empty?
|
48
46
|
end
|
47
|
+
tagged_values += flattened_tags unless flattened_tags.empty?
|
49
48
|
|
50
49
|
if block || in_tag_context?
|
51
|
-
tag(
|
50
|
+
tag("tagged" => tagged_values, &block)
|
52
51
|
else
|
53
|
-
tag_globally(
|
52
|
+
tag_globally("tagged" => tagged_values)
|
54
53
|
end
|
55
54
|
end
|
56
55
|
|
@@ -59,13 +58,24 @@ module Lumberjack
|
|
59
58
|
end
|
60
59
|
|
61
60
|
def pop_tags(size = 1)
|
62
|
-
tagged_values =
|
61
|
+
tagged_values = tag_value("tagged")
|
62
|
+
return unless tagged_values.is_a?(Array)
|
63
|
+
|
63
64
|
tagged_values = ((tagged_values.size > size) ? tagged_values[0, tagged_values.size - size] : nil)
|
64
|
-
|
65
|
+
|
66
|
+
if in_tag_context?
|
67
|
+
tag("tagged" => tagged_values)
|
68
|
+
else
|
69
|
+
tag_globally("tagged" => tagged_values)
|
70
|
+
end
|
65
71
|
end
|
66
72
|
|
67
73
|
def clear_tags!
|
68
|
-
|
74
|
+
if in_tag_context?
|
75
|
+
tag("tagged" => nil)
|
76
|
+
else
|
77
|
+
tag_globally("tagged" => nil)
|
78
|
+
end
|
69
79
|
end
|
70
80
|
end
|
71
81
|
end
|
data/lumberjack.gemspec
CHANGED
@@ -8,6 +8,12 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.homepage = "https://github.com/bdurand/lumberjack"
|
9
9
|
spec.license = "MIT"
|
10
10
|
|
11
|
+
spec.metadata = {
|
12
|
+
"homepage_uri" => spec.homepage,
|
13
|
+
"source_code_uri" => spec.homepage,
|
14
|
+
"changelog_uri" => "#{spec.homepage}/blob/main/CHANGELOG.md"
|
15
|
+
}
|
16
|
+
|
11
17
|
# Specify which files should be added to the gem when it is released.
|
12
18
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
13
19
|
ignore_files = %w[
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lumberjack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Durand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-07-
|
11
|
+
date: 2025-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -78,7 +78,10 @@ files:
|
|
78
78
|
homepage: https://github.com/bdurand/lumberjack
|
79
79
|
licenses:
|
80
80
|
- MIT
|
81
|
-
metadata:
|
81
|
+
metadata:
|
82
|
+
homepage_uri: https://github.com/bdurand/lumberjack
|
83
|
+
source_code_uri: https://github.com/bdurand/lumberjack
|
84
|
+
changelog_uri: https://github.com/bdurand/lumberjack/blob/main/CHANGELOG.md
|
82
85
|
post_install_message:
|
83
86
|
rdoc_options: []
|
84
87
|
require_paths:
|