lumberjack 1.4.0 → 1.4.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 +12 -0
- data/VERSION +1 -1
- data/lib/lumberjack/formatter.rb +8 -1
- data/lib/lumberjack/log_entry.rb +8 -2
- data/lib/lumberjack/logger.rb +8 -10
- data/lib/lumberjack/tag_formatter.rb +16 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02eeeab48546eb4e180fbb933e3de684a77fea0c450589df6dd61ddcf2cb222f
|
4
|
+
data.tar.gz: b6e3f8e910101ca39422473da6aa83f1de2ee47fbb124319008f0abebfef30d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28db09d28e5165583d07f41b08259223eca744ec51a5bf07a8dfcc9f6f457e6e8c31da9ccef79d71aa95db3e86c337e03f050c4f36dd6fc04f13c924669cd0db
|
7
|
+
data.tar.gz: 3f5d888d77f72b28ae3bf974e45d662c832a1148797955c4263e484825628231297deb18e12d3cc51c3b84555240cde2a63cacb1ff0b4a603950b550eeb7d3d8
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,18 @@ 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.4.2
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
- Fixed issue where calling `Lumberjack::LogEntry#tag` would raise an error if there were no tags set on the log entry.
|
12
|
+
|
13
|
+
## 1.4.1
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
|
17
|
+
- Catch errors when formatting values so that it doesn't prevent logging. Otherwise there can be no way to log that the error occurred. Values that produced errors in the formatter will now be shown in the logs as "<Error formatting CLASS_NAME: ERROR_CLASS ERROR_MESSAGE>".
|
18
|
+
|
7
19
|
## 1.4.0
|
8
20
|
|
9
21
|
### Changed
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.2
|
data/lib/lumberjack/formatter.rb
CHANGED
@@ -170,7 +170,14 @@ module Lumberjack
|
|
170
170
|
def format(message)
|
171
171
|
formatter = formatter_for(message.class)
|
172
172
|
if formatter&.respond_to?(:call)
|
173
|
-
|
173
|
+
begin
|
174
|
+
formatter.call(message)
|
175
|
+
rescue SystemStackError, StandardError => e
|
176
|
+
error_message = e.class.name
|
177
|
+
error_message = "#{error_message} #{e.message}" if e.message && e.message != ""
|
178
|
+
warn("<Error formatting #{message.class.name}: #{error_message}>")
|
179
|
+
"<Error formatting #{message.class.name}: #{error_message}>"
|
180
|
+
end
|
174
181
|
else
|
175
182
|
message
|
176
183
|
end
|
data/lib/lumberjack/log_entry.rb
CHANGED
@@ -68,6 +68,8 @@ module Lumberjack
|
|
68
68
|
# @param name [String, Symbol] The tag name.
|
69
69
|
# @return [Object, nil] The tag value or nil if the tag does not exist.
|
70
70
|
def tag(name)
|
71
|
+
return nil if tags.nil?
|
72
|
+
|
71
73
|
TagContext.new(tags)[name]
|
72
74
|
end
|
73
75
|
|
@@ -98,7 +100,9 @@ module Lumberjack
|
|
98
100
|
tags_string
|
99
101
|
end
|
100
102
|
|
101
|
-
def compact_tags(tags)
|
103
|
+
def compact_tags(tags, seen = nil)
|
104
|
+
return {} if seen&.include?(tags.object_id)
|
105
|
+
|
102
106
|
delete_keys = nil
|
103
107
|
compacted_keys = nil
|
104
108
|
|
@@ -107,7 +111,9 @@ module Lumberjack
|
|
107
111
|
delete_keys ||= []
|
108
112
|
delete_keys << key
|
109
113
|
elsif value.is_a?(Hash)
|
110
|
-
|
114
|
+
seen ||= Set.new
|
115
|
+
seen << tags.object_id
|
116
|
+
compacted_value = compact_tags(value, seen)
|
111
117
|
if compacted_value.empty?
|
112
118
|
delete_keys ||= []
|
113
119
|
delete_keys << key
|
data/lib/lumberjack/logger.rb
CHANGED
@@ -718,16 +718,14 @@ module Lumberjack
|
|
718
718
|
# Create a thread that will periodically call flush.
|
719
719
|
def create_flusher_thread(flush_seconds) # :nodoc:
|
720
720
|
if flush_seconds > 0
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
warn("Error flushing log: #{e.inspect}")
|
730
|
-
end
|
721
|
+
logger = self
|
722
|
+
Thread.new do
|
723
|
+
until closed?
|
724
|
+
begin
|
725
|
+
sleep(flush_seconds)
|
726
|
+
logger.flush if Time.now - logger.last_flushed_at >= flush_seconds
|
727
|
+
rescue => e
|
728
|
+
warn("Error flushing log: #{e.inspect}")
|
731
729
|
end
|
732
730
|
end
|
733
731
|
end
|
@@ -106,12 +106,12 @@ module Lumberjack
|
|
106
106
|
return tags
|
107
107
|
end
|
108
108
|
|
109
|
-
|
109
|
+
formatted_tags(tags)
|
110
110
|
end
|
111
111
|
|
112
112
|
private
|
113
113
|
|
114
|
-
def
|
114
|
+
def formatted_tags(tags, skip_classes: nil, prefix: nil)
|
115
115
|
formatted = {}
|
116
116
|
|
117
117
|
tags.each do |name, value|
|
@@ -134,12 +134,19 @@ module Lumberjack
|
|
134
134
|
|
135
135
|
formatter ||= @default_formatter
|
136
136
|
|
137
|
-
formatted_value =
|
138
|
-
formatter.
|
139
|
-
|
140
|
-
formatter.call
|
141
|
-
|
142
|
-
|
137
|
+
formatted_value = begin
|
138
|
+
if formatter.is_a?(Lumberjack::Formatter)
|
139
|
+
formatter.format(value)
|
140
|
+
elsif formatter.respond_to?(:call)
|
141
|
+
formatter.call(value)
|
142
|
+
else
|
143
|
+
value
|
144
|
+
end
|
145
|
+
rescue SystemStackError, StandardError => e
|
146
|
+
error_message = e.class.name
|
147
|
+
error_message = "#{error_message} #{e.message}" if e.message && e.message != ""
|
148
|
+
warn("<Error formatting #{value.class.name}: #{error_message}>")
|
149
|
+
"<Error formatting #{value.class.name}: #{error_message}>"
|
143
150
|
end
|
144
151
|
|
145
152
|
if formatted_value.is_a?(Enumerable)
|
@@ -148,7 +155,7 @@ module Lumberjack
|
|
148
155
|
sub_prefix = "#{prefixed_name}."
|
149
156
|
|
150
157
|
formatted_value = if formatted_value.is_a?(Hash)
|
151
|
-
|
158
|
+
formatted_tags(formatted_value, skip_classes: skip_classes, prefix: sub_prefix)
|
152
159
|
else
|
153
160
|
formatted_value.collect do |item|
|
154
161
|
formatted_tag_value(nil, item, skip_classes: skip_classes, prefix: sub_prefix)
|
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.4.
|
4
|
+
version: 1.4.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-
|
11
|
+
date: 2025-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|