lumberjack 1.2.9 → 1.2.10

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: 9d05405664f1f85b1a68eb24c21a89d3b57ea8caf09513a348a138d53f1870b0
4
- data.tar.gz: 1ccc42fdd657ab4acf89bab8bfd7fb5e7d69d3825367483c49ee10c5c6e037d1
3
+ metadata.gz: f5ab13ef762e8cdcb989ce1937c117fdbf938edc723c48f338b74edcd5d8e776
4
+ data.tar.gz: a003d08ef71531551083e4794807d3469fd9691abdc0686e5cc36e6859199922
5
5
  SHA512:
6
- metadata.gz: b48a0035d1adf22768071e6025692f001a8d13b931314ab0b6ea9131696bcb38d321db5fc1246bf2c49623cad26770bfdb32fe0e8e169ae455322e2693dad8e8
7
- data.tar.gz: f80ae18348c1a3e5261aa27051d4cf3e087550e0d57d3a13459da6f7641e0ea270382478108127f03f6b7596faab27d8d3f92488fbbb2cb0c50c4d247ac61910
6
+ metadata.gz: b0b527513bd37ca507bfe63c83cd00831f544a9ecdcedc13aeb566a3e74ae4ff0469eefed220da79c7cbeb385aa0fcff249b2480d74c95a1ff21899a8e723afb
7
+ data.tar.gz: 109411706ed4976f9711d6fcc17dd93bd7700cf72e01f40eaadba5701284e4175aa3791a311a19ab78eaedc34270ff9b16cd4ca394bb01a90b6c29d8e295f8e0
data/CHANGELOG.md CHANGED
@@ -4,9 +4,20 @@ 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.2.10
8
+
9
+ ### Added
10
+
11
+ - Added `with_level` method for compatibility with the latest standard library logger gem.
12
+
13
+ ### Fixed
14
+
15
+ - Fixed typo in magic frozen string literal comments. (thanks @andyw8 and @steveclarke)
16
+
7
17
  ## 1.2.9
8
18
 
9
19
  ### Added
20
+
10
21
  - Allow passing in formatters as class names when adding them.
11
22
  - Allow passing in formatters initialization arguments when adding them.
12
23
  - Add truncate formatter for capping the length of log messages.
@@ -14,54 +25,65 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
14
25
  ## 1.2.8
15
26
 
16
27
  ### Added
28
+
17
29
  - Add `Logger#untagged` to remove previously set logging tags from a block.
18
30
  - Return result of the block when a block is passed to `Logger#tag`.
19
31
 
20
32
  ## 1.2.7
21
33
 
22
34
  ### Fixed
35
+
23
36
  - Allow passing frozen hashes to `Logger#tag`. Tags passed to this method are now duplicated so the logger maintains it's own copy of the hash.
24
37
 
25
38
  ## 1.2.6
26
39
 
27
40
  ### Added
41
+
28
42
  - Add Logger#remove_tag
29
43
 
30
44
  ### Fixed
45
+
31
46
  - Fix `Logger#tag` so it only ads to the current block's logger tags instead of the global tags if called inside a `Logger#tag` block.
32
47
 
33
48
 
34
49
  ## 1.2.5
35
50
 
36
51
  ### Added
52
+
37
53
  - Add support for bang methods (error!) for setting the log level.
38
54
 
39
55
  ### Fixed
56
+
40
57
  - Fixed logic with recursive reference guard in StructuredFormatter so it only suppresses Enumerable references.
41
58
 
42
59
  ## 1.2.4
43
60
 
44
61
  ### Added
62
+
45
63
  - Enhance `ActiveSupport::TaggedLogging` support so code that Lumberjack loggers can be wrapped with a tagged logger.
46
64
 
47
65
  ## 1.2.3
48
66
 
49
67
  ### Fixed
68
+
50
69
  - Fix structured formatter so no-recursive, duplicate references are allowed.
51
70
 
52
71
  ## 1.2.2
53
72
 
54
73
  ### Fixed
74
+
55
75
  - Prevent infinite loops in the structured formatter where objects have backreferences to each other.
56
76
 
57
77
  ## 1.2.1
58
78
 
59
79
  ### Fixed
80
+
60
81
  - Prevent infinite loops where logging a statement triggers the logger.
61
82
 
62
83
  ## 1.2.0
63
84
 
64
85
  ### Added
86
+
65
87
  - Enable compatibility with `ActiveSupport::TaggedLogger` by calling `tagged_logger!` on a logger.
66
88
  - Add `tag_formatter` to logger to specify formatting of tags for output.
67
89
  - Allow adding and removing classes by name to formatters.
@@ -78,11 +100,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
78
100
  ## 1.1.1
79
101
 
80
102
  ### Added
103
+
81
104
  - Replace Procs in tag values with the value of calling the Proc in log entries.
82
105
 
83
106
  ## 1.1.0
84
107
 
85
108
  ### Added
109
+
86
110
  - Change `Lumberjack::Logger` to inherit from ::Logger
87
111
  - Add support for tags on log messages
88
112
  - Add global tag context for all loggers
@@ -96,59 +120,71 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
96
120
  - Add support for modules in formatters
97
121
 
98
122
  ### Removed
123
+
99
124
  - End support for ruby versions < 2.3
100
125
 
101
126
  ## 1.0.13
102
127
 
103
128
  ### Added
129
+
104
130
  - Added `:min_roll_check` option to `Lumberjack::Device::RollingLogFile` to reduce file system checks. Default is now to only check if a file needs to be rolled at most once per second.
105
131
  - Force immutable strings for Ruby versions that support them.
106
132
 
107
133
  ### Changed
134
+
108
135
  - Reduce amount of code executed inside a mutex lock when writing to the logger stream.
109
136
 
110
137
  ## 1.0.12
111
138
 
112
139
  ### Added
140
+
113
141
  - Add support for `ActionDispatch` request id for better Rails compatibility.
114
142
 
115
143
  ## 1.0.11
116
144
 
117
145
  ### Fixed
118
- - Fix Ruby 2.4 deprecation warning on Fixnum (thanks koic).
119
- - Fix gemspec files to be flat array (thanks e2).
146
+
147
+ - Fix Ruby 2.4 deprecation warning on Fixnum (thanks @koic).
148
+ - Fix gemspec files to be flat array (thanks @e2).
120
149
 
121
150
  ## 1.0.10
122
151
 
123
152
  ### Added
153
+
124
154
  - Expose option to manually roll log files.
125
155
 
126
156
  ### Changed
157
+
127
158
  - Minor code cleanup.
128
159
 
129
160
  ## 1.0.9
130
161
 
131
162
  ### Added
163
+
132
164
  - Add method so Formatter is compatible with `ActiveSupport` logging extensions.
133
165
 
134
166
  ## 1.0.8
135
167
 
136
168
  ### Fixed
169
+
137
170
  - Fix another internal variable name conflict with `ActiveSupport` logging extensions.
138
171
 
139
172
  ## 1.0.7
140
173
 
141
174
  ### Fixed
175
+
142
176
  - Fix broken formatter attribute method.
143
177
 
144
178
  ## 1.0.6
145
179
 
146
180
  ### Fixed
181
+
147
182
  - Fix internal variable name conflict with `ActiveSupport` logging extensions.
148
183
 
149
184
  ## 1.0.5
150
185
 
151
186
  ### Changed
187
+
152
188
  - Update docs.
153
189
  - Remove autoload calls to make thread safe.
154
190
  - Make compatible with Ruby 2.1.1 Pathname.
@@ -157,26 +193,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
157
193
  ## 1.0.4
158
194
 
159
195
  ### Added
196
+
160
197
  - Add ability to supply a unit of work id for a block instead of having one generated every time.
161
198
 
162
199
  ## 1.0.3
163
200
 
164
201
  ### Fixed
202
+
165
203
  - Change log file output format to binary to avoid encoding warnings.
166
204
  - Fixed bug in log file rolling that left the file locked.
167
205
 
168
206
  ## 1.0.2
169
207
 
170
208
  ### Fixed
209
+
171
210
  - Remove deprecation warnings under ruby 1.9.3.
172
211
  - Add more error checking around file rolling.
173
212
 
174
213
  ## 1.0.1
175
214
 
176
215
  ### Fixed
216
+
177
217
  - Writes are no longer buffered by default.
178
218
 
179
219
  ## 1.0.0
180
220
 
181
221
  ### Added
222
+
182
223
  - Initial release
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
- ![Continuous Integration](https://github.com/bdurand/lumberjack/workflows/Continuous%20Integration/badge.svg)
2
- [![Maintainability](https://api.codeclimate.com/v1/badges/a0abc03721fff9b0cde1/maintainability)](https://codeclimate.com/github/bdurand/lumberjack/maintainability)
3
- [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
4
-
5
1
  # Lumberjack
6
2
 
3
+ [![Continuous Integration](https://github.com/bdurand/lumberjack/actions/workflows/continuous_integration.yml/badge.svg)](https://github.com/bdurand/lumberjack/actions/workflows/continuous_integration.yml)
4
+ [![Regression Test](https://github.com/bdurand/lumberjack/actions/workflows/regression_test.yml/badge.svg)](https://github.com/bdurand/lumberjack/actions/workflows/regression_test.yml)
5
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
6
+ [![Gem Version](https://badge.fury.io/rb/lumberjack.svg)](https://badge.fury.io/rb/lumberjack)
7
+
7
8
  Lumberjack is a simple, powerful, and fast logging implementation in Ruby. It uses nearly the same API as the Logger class in the Ruby standard library and as ActiveSupport::BufferedLogger in Rails.
8
9
 
9
10
  ## Usage
@@ -276,3 +277,31 @@ To send log messages to syslog instead of to a file, you could use this (require
276
277
  ```ruby
277
278
  config.logger = Lumberjack::Logger.new(Lumberjack::SyslogDevice.new)
278
279
  ```
280
+
281
+ ## Installation
282
+
283
+ Add this line to your application's Gemfile:
284
+
285
+ ```ruby
286
+ gem 'lumberjack'
287
+ ```
288
+
289
+ And then execute:
290
+ ```bash
291
+ $ bundle
292
+ ```
293
+
294
+ Or install it yourself as:
295
+ ```bash
296
+ $ gem install lumberjack
297
+ ```
298
+
299
+ ## Contributing
300
+
301
+ Open a pull request on GitHub.
302
+
303
+ Please use the [standardrb](https://github.com/testdouble/standard) syntax and lint your code with `standardrb --fix` before submitting.
304
+
305
+ ## License
306
+
307
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.9
1
+ 1.2.10
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  require "date"
4
4
 
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  require "fileutils"
4
4
 
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Device
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Device
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Device
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Device
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Device
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  # This is an abstract class for logging devices. Subclasses must implement the +write+ method and
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -16,7 +16,7 @@ module Lumberjack
16
16
  end
17
17
 
18
18
  def call(exception)
19
- message = "#{exception.class.name}: #{exception.message}"
19
+ message = +"#{exception.class.name}: #{exception.message}"
20
20
  trace = exception.backtrace
21
21
  if trace
22
22
  trace = clean_backtrace(trace)
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  require "pp"
4
4
  require "stringio"
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  require "set"
4
4
 
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  class Formatter
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  # This class controls the conversion of log entry messages into a loggable format. This allows you
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  # An entry in a log is a data structure that captures the log message as well as
@@ -66,7 +66,7 @@ module Lumberjack
66
66
  private
67
67
 
68
68
  def tags_to_s
69
- tags_string = ""
69
+ tags_string = +""
70
70
  tags&.each { |name, value| tags_string << " #{name}:#{value.inspect}" }
71
71
  tags_string
72
72
  end
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  # Logger is a thread safe logging object. It has a compatible API with the Ruby
@@ -118,15 +118,19 @@ module Lumberjack
118
118
  # @param [Integer, Symbol, String] value The severity level.
119
119
  # @return [void]
120
120
  def level=(value)
121
- @level = if value.is_a?(Integer)
122
- value
123
- else
124
- Severity.label_to_level(value)
125
- end
121
+ @level = Severity.coerce(value)
126
122
  end
127
123
 
128
124
  alias_method :sev_threshold=, :level=
129
125
 
126
+ # Adjust the log level during the block execution for the current Fiber only.
127
+ #
128
+ # @param [Integer, Symbol, String] severity The severity level.
129
+ # @return [Object] The result of the block.
130
+ def with_level(severity, &block)
131
+ push_thread_local_value(:lumberjack_logger_level, Severity.coerce(severity), &block)
132
+ end
133
+
130
134
  # Set the Lumberjack::Formatter used to format objects for logging as messages.
131
135
  #
132
136
  # @param [Lumberjack::Formatter, Object] value The formatter to use.
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  module Rack
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  module Rack
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  module Rack
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  module Rack
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  # The standard severity levels for logging messages.
@@ -29,6 +29,18 @@ module Lumberjack
29
29
  def label_to_level(label)
30
30
  SEVERITY_LABELS.index(label.to_s.upcase) || UNKNOWN
31
31
  end
32
+
33
+ # Coerce a value to a severity level.
34
+ #
35
+ # @param [Integer, String, Symbol] value The value to coerce.
36
+ # @return [Integer] The severity level.
37
+ def coerce(value)
38
+ if value.is_a?(Integer)
39
+ value
40
+ else
41
+ label_to_level(value)
42
+ end
43
+ end
32
44
  end
33
45
  end
34
46
  end
@@ -1,4 +1,4 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Lumberjack
4
4
  # A template converts entries to strings. Templates can contain the following place holders to
@@ -98,7 +98,7 @@ module Lumberjack
98
98
  def tag_args(tags, tag_vars)
99
99
  return [nil] * (tag_vars.size + 1) if tags.nil? || tags.size == 0
100
100
 
101
- tags_string = ""
101
+ tags_string = +""
102
102
  tags.each do |name, value|
103
103
  unless value.nil? || tag_vars.include?(name)
104
104
  value = value.to_s
data/lib/lumberjack.rb CHANGED
@@ -1,9 +1,10 @@
1
- # frozen_string_literals: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  require "rbconfig"
4
4
  require "time"
5
5
  require "securerandom"
6
6
  require "logger"
7
+ require "fiber"
7
8
 
8
9
  module Lumberjack
9
10
  LINE_SEPARATOR = ((RbConfig::CONFIG["host_os"] =~ /mswin/i) ? "\r\n" : "\n")
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.2.9
4
+ version: 1.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Durand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-19 00:00:00.000000000 Z
11
+ date: 2023-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  requirements: []
91
- rubygems_version: 3.4.12
91
+ rubygems_version: 3.4.20
92
92
  signing_key:
93
93
  specification_version: 4
94
94
  summary: A simple, powerful, and very fast logging utility that can be a drop in replacement