lumberjack 1.2.7 → 1.2.9

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.
@@ -14,7 +14,7 @@ module Lumberjack
14
14
  # If your tag name contains characters other than alpha numerics and the underscore, you must surround it
15
15
  # with curly brackets: `:{http.request-id}`.
16
16
  class Template
17
- TEMPLATE_ARGUMENT_ORDER = %w(:time :severity :progname :pid :message :tags).freeze
17
+ TEMPLATE_ARGUMENT_ORDER = %w[:time :severity :progname :pid :message :tags].freeze
18
18
  MILLISECOND_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%3N"
19
19
  MICROSECOND_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%6N"
20
20
  PLACEHOLDER_PATTERN = /:(([a-z0-9_]+)|({[^}]+}))/i.freeze
@@ -30,6 +30,9 @@ module Lumberjack
30
30
  # specified precision.
31
31
  #
32
32
  # Messages will have white space stripped from both ends.
33
+ #
34
+ # @param [String] first_line The template to use to format the first line of a message.
35
+ # @param [Hash] options The options for the template.
33
36
  def initialize(first_line, options = {})
34
37
  @first_line_template, @first_line_tags = compile(first_line)
35
38
  additional_lines = options[:additional_lines] || "#{Lumberjack::LINE_SEPARATOR}:message"
@@ -39,6 +42,9 @@ module Lumberjack
39
42
  self.datetime_format = (options[:time_format] || :milliseconds)
40
43
  end
41
44
 
45
+ # Set the format used to format the time.
46
+ #
47
+ # @param [String] format The format to use to format the time.
42
48
  def datetime_format=(format)
43
49
  if format == :milliseconds
44
50
  format = MILLISECOND_TIME_FORMAT
@@ -48,11 +54,17 @@ module Lumberjack
48
54
  @time_formatter = Formatter::DateTimeFormatter.new(format)
49
55
  end
50
56
 
57
+ # Get the format used to format the time.
58
+ #
59
+ # @return [String]
51
60
  def datetime_format
52
61
  @time_formatter.format
53
62
  end
54
63
 
55
64
  # Convert an entry into a string using the template.
65
+ #
66
+ # @param [Lumberjack::LogEntry] entry The entry to convert to a string.
67
+ # @return [String] The entry converted to a string.
56
68
  def call(entry)
57
69
  return entry unless entry.is_a?(LogEntry)
58
70
 
@@ -86,7 +98,7 @@ module Lumberjack
86
98
  def tag_args(tags, tag_vars)
87
99
  return [nil] * (tag_vars.size + 1) if tags.nil? || tags.size == 0
88
100
 
89
- tags_string = String.new
101
+ tags_string = ""
90
102
  tags.each do |name, value|
91
103
  unless value.nil? || tag_vars.include?(name)
92
104
  value = value.to_s
@@ -103,7 +115,7 @@ module Lumberjack
103
115
  end
104
116
 
105
117
  # Compile the template string into a value that can be used with sprintf.
106
- def compile(template) #:nodoc:
118
+ def compile(template) # :nodoc:
107
119
  tag_vars = []
108
120
  template = template.gsub(PLACEHOLDER_PATTERN) do |match|
109
121
  var_name = match.sub("{", "").sub("}", "")
data/lib/lumberjack.rb CHANGED
@@ -1,27 +1,26 @@
1
1
  # frozen_string_literals: true
2
2
 
3
- require 'rbconfig'
4
- require 'time'
5
- require 'thread'
6
- require 'securerandom'
7
- require 'logger'
3
+ require "rbconfig"
4
+ require "time"
5
+ require "securerandom"
6
+ require "logger"
8
7
 
9
8
  module Lumberjack
10
- LINE_SEPARATOR = (RbConfig::CONFIG['host_os'].match(/mswin/i) ? "\r\n" : "\n")
9
+ LINE_SEPARATOR = ((RbConfig::CONFIG["host_os"] =~ /mswin/i) ? "\r\n" : "\n")
11
10
 
12
- require_relative "lumberjack/severity.rb"
13
- require_relative "lumberjack/formatter.rb"
11
+ require_relative "lumberjack/severity"
12
+ require_relative "lumberjack/formatter"
14
13
 
15
- require_relative "lumberjack/context.rb"
16
- require_relative "lumberjack/log_entry.rb"
17
- require_relative "lumberjack/device.rb"
18
- require_relative "lumberjack/logger.rb"
19
- require_relative "lumberjack/tags.rb"
20
- require_relative "lumberjack/tag_formatter.rb"
21
- require_relative "lumberjack/tagged_logger_support.rb"
22
- require_relative "lumberjack/tagged_logging.rb"
23
- require_relative "lumberjack/template.rb"
24
- require_relative "lumberjack/rack.rb"
14
+ require_relative "lumberjack/context"
15
+ require_relative "lumberjack/log_entry"
16
+ require_relative "lumberjack/device"
17
+ require_relative "lumberjack/logger"
18
+ require_relative "lumberjack/tags"
19
+ require_relative "lumberjack/tag_formatter"
20
+ require_relative "lumberjack/tagged_logger_support"
21
+ require_relative "lumberjack/tagged_logging"
22
+ require_relative "lumberjack/template"
23
+ require_relative "lumberjack/rack"
25
24
 
26
25
  class << self
27
26
  # Define a unit of work within a block. Within the block supplied to this
@@ -33,6 +32,9 @@ module Lumberjack
33
32
  #
34
33
  # For the common use case of treating a single web request as a unit of work, see the
35
34
  # Lumberjack::Rack::UnitOfWork class.
35
+ #
36
+ # @param [String] id The id for the unit of work.
37
+ # @return [void]
36
38
  def unit_of_work(id = nil)
37
39
  id ||= SecureRandom.hex(6)
38
40
  context do
@@ -42,6 +44,8 @@ module Lumberjack
42
44
  end
43
45
 
44
46
  # Get the UniqueIdentifier for the current unit of work.
47
+ #
48
+ # @return [String, nil] The id for the current unit of work.
45
49
  def unit_of_work_id
46
50
  context[:unit_of_work_id]
47
51
  end
@@ -54,36 +58,53 @@ module Lumberjack
54
58
  #
55
59
  # Otherwise, it will return the current context. If one doesn't exist, it will return a new one
56
60
  # but that context will not be in any scope.
57
- def context
61
+ #
62
+ # @return [Lumberjack::Context] The current context if called without a block.
63
+ def context(&block)
58
64
  current_context = Thread.current[:lumberjack_context]
59
- if block_given?
60
- Thread.current[:lumberjack_context] = Context.new(current_context)
61
- begin
62
- yield
63
- ensure
64
- Thread.current[:lumberjack_context] = current_context
65
- end
65
+ if block
66
+ use_context(Context.new(current_context), &block)
66
67
  else
67
68
  current_context || Context.new
68
69
  end
69
70
  end
70
-
71
+
72
+ # Set the context to use within a block.
73
+ #
74
+ # @param [Lumberjack::Context] context The context to use within the block.
75
+ # @return [Object] The result of the block.
76
+ def use_context(context, &block)
77
+ current_context = Thread.current[:lumberjack_context]
78
+ begin
79
+ Thread.current[:lumberjack_context] = (context || Context.new)
80
+ yield
81
+ ensure
82
+ Thread.current[:lumberjack_context] = current_context
83
+ end
84
+ end
85
+
71
86
  # Return true if inside a context block.
87
+ #
88
+ # @return [Boolean]
72
89
  def context?
73
90
  !!Thread.current[:lumberjack_context]
74
91
  end
75
92
 
76
93
  # Return the tags from the current context or nil if there are no tags.
94
+ #
95
+ # @return [Hash, nil]
77
96
  def context_tags
78
97
  context = Thread.current[:lumberjack_context]
79
- context.tags if context
98
+ context&.tags
80
99
  end
81
100
 
82
101
  # Set tags on the current context
102
+ #
103
+ # @param [Hash] tags The tags to set.
104
+ # @return [void]
83
105
  def tag(tags)
84
106
  context = Thread.current[:lumberjack_context]
85
- context.tag(tags) if context
107
+ context&.tag(tags)
86
108
  end
87
-
88
109
  end
89
110
  end
data/lumberjack.gemspec CHANGED
@@ -1,8 +1,8 @@
1
1
  Gem::Specification.new do |spec|
2
- spec.name = 'lumberjack'
3
- spec.version = File.read(File.expand_path("../VERSION", __FILE__)).strip
4
- spec.authors = ['Brian Durand']
5
- spec.email = ['bbdurand@gmail.com']
2
+ spec.name = "lumberjack"
3
+ spec.version = File.read(File.join(__dir__, "VERSION")).strip
4
+ spec.authors = ["Brian Durand"]
5
+ spec.email = ["bbdurand@gmail.com"]
6
6
 
7
7
  spec.summary = "A simple, powerful, and very fast logging utility that can be a drop in replacement for Logger or ActiveSupport::BufferedLogger."
8
8
  spec.homepage = "https://github.com/bdurand/lumberjack"
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
 
11
11
  # Specify which files should be added to the gem when it is released.
12
12
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
13
- ignore_files = %w(
13
+ ignore_files = %w[
14
14
  .
15
15
  Appraisals
16
16
  Gemfile
@@ -18,17 +18,14 @@ Gem::Specification.new do |spec|
18
18
  Rakefile
19
19
  gemfiles/
20
20
  spec/
21
- )
22
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
23
- `git ls-files -z`.split("\x0").reject{ |f| ignore_files.any?{ |path| f.start_with?(path) } }
21
+ ]
22
+ spec.files = Dir.chdir(__dir__) do
23
+ `git ls-files -z`.split("\x0").reject { |f| ignore_files.any? { |path| f.start_with?(path) } }
24
24
  end
25
25
 
26
- spec.require_paths = ['lib']
26
+ spec.require_paths = ["lib"]
27
27
 
28
- spec.required_ruby_version = '>= 2.3.0'
28
+ spec.required_ruby_version = ">= 2.3.0"
29
29
 
30
- spec.add_development_dependency("rspec", ["~> 3.0"])
31
- spec.add_development_dependency("timecop")
32
- spec.add_development_dependency "rake"
33
- spec.add_development_dependency "appraisal"
30
+ spec.add_development_dependency "bundler"
34
31
  end
metadata CHANGED
@@ -1,59 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lumberjack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Durand
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-30 00:00:00.000000000 Z
11
+ date: 2023-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '3.0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '3.0'
27
- - !ruby/object:Gem::Dependency
28
- name: timecop
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: appraisal
14
+ name: bundler
57
15
  requirement: !ruby/object:Gem::Requirement
58
16
  requirements:
59
17
  - - ">="
@@ -66,7 +24,7 @@ dependencies:
66
24
  - - ">="
67
25
  - !ruby/object:Gem::Version
68
26
  version: '0'
69
- description:
27
+ description:
70
28
  email:
71
29
  - bbdurand@gmail.com
72
30
  executables: []
@@ -97,6 +55,7 @@ files:
97
55
  - lib/lumberjack/formatter/string_formatter.rb
98
56
  - lib/lumberjack/formatter/strip_formatter.rb
99
57
  - lib/lumberjack/formatter/structured_formatter.rb
58
+ - lib/lumberjack/formatter/truncate_formatter.rb
100
59
  - lib/lumberjack/log_entry.rb
101
60
  - lib/lumberjack/logger.rb
102
61
  - lib/lumberjack/rack.rb
@@ -114,7 +73,7 @@ homepage: https://github.com/bdurand/lumberjack
114
73
  licenses:
115
74
  - MIT
116
75
  metadata: {}
117
- post_install_message:
76
+ post_install_message:
118
77
  rdoc_options: []
119
78
  require_paths:
120
79
  - lib
@@ -129,8 +88,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
88
  - !ruby/object:Gem::Version
130
89
  version: '0'
131
90
  requirements: []
132
- rubygems_version: 3.0.3
133
- signing_key:
91
+ rubygems_version: 3.4.12
92
+ signing_key:
134
93
  specification_version: 4
135
94
  summary: A simple, powerful, and very fast logging utility that can be a drop in replacement
136
95
  for Logger or ActiveSupport::BufferedLogger.