lumberjack 1.2.9 → 1.2.10

Sign up to get free protection for your applications and to get access to all the features.
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