mixlib-log 1.7.1 → 2.0.0

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
- SHA1:
3
- metadata.gz: 017447a21036ef692d1639eac2e27bf9162039ee
4
- data.tar.gz: 5e9baa7ae56ee1561d89bb02c2f5efc8a2c3962e
2
+ SHA256:
3
+ metadata.gz: 032aa8e0efc805397575ca65b6ac96af30afc37e027f21268d4ff3c17ab854d4
4
+ data.tar.gz: 6b599cf65fa6814a5d600db8530e036197a9960b52afea9f886495095d5573b6
5
5
  SHA512:
6
- metadata.gz: fdc46bd31f1d90baaabb4ce94134af29fbedd5b8abed1e5cb4045d97eb373942629f24f6aa653becdd4f1b63a837083a07e8d75e60215f4ec5eaf33b00cec2b2
7
- data.tar.gz: 01426a5b5217db4d26ecbf075460f97a47f018fff98478e73ec08a9d277fa00d23d83f0f741136667779670dad7ca60330e81f6baf9499a1e575e1ec5cd3f6f9
6
+ metadata.gz: c8bbbc21e0f7108f3ccc9a93ccd8ddbc43e05244ec982c1cd70c2353992f15926417e17190ee09a1c9e84e178b5f4533a14ce27612797e53509e07b60fdc62b5
7
+ data.tar.gz: ffe35cc1471bf287c4d616a812c5406caeadc38c98ad071294d077e6b29a11d4a15ed2c00f3de6d2467a9bed2fdc644a35b4d74f3e2bd58dbb5bcf23b1e83123
data/Gemfile CHANGED
@@ -5,5 +5,4 @@ gemspec
5
5
  group :development do
6
6
  gem "rdoc"
7
7
  gem "bundler"
8
- gem "rack", "< 2.0"
9
8
  end
data/README.md CHANGED
@@ -22,7 +22,7 @@ Log.error('baz')
22
22
  Log.fatal('wewt')
23
23
  ```
24
24
 
25
- By default, `Mixlib::Logger` logs to STDOUT. To alter this, you should call +Log.init+, passing any arguments to the standard Ruby Logger. For example:
25
+ By default, `Mixlib::Logger` logs to STDOUT. To alter this, you should call `Log.init`, passing any arguments to the standard Ruby Logger. For example:
26
26
 
27
27
  ```ruby
28
28
  Log.init('/tmp/logfile') # log to /tmp/logfile
@@ -31,7 +31,11 @@ Log.init('/tmp/logfile', 7) # log to /tmp/logfile, rotate every day
31
31
 
32
32
  Enjoy!
33
33
 
34
- ## LICENSE:
34
+ ## Contributing
35
+
36
+ For information on contributing to this project see <https://github.com/chef/chef/blob/master/CONTRIBUTING.md>
37
+
38
+ ## License
35
39
 
36
40
  - Copyright:: Copyright (c) 2008-2016 Chef Software, Inc.
37
41
  - License:: Apache License, Version 2.0
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
7
7
  spec.pattern = "spec/**/*_spec.rb"
8
8
  end
9
9
 
10
- task :default => :spec
10
+ task default: [:style, :spec, :features]
11
11
 
12
12
  # For rubygems-test
13
13
  task :test => :spec
@@ -19,15 +19,15 @@
19
19
  require "logger"
20
20
  require "mixlib/log/version"
21
21
  require "mixlib/log/formatter"
22
+ require "mixlib/log/child"
23
+ require "mixlib/log/logging"
22
24
 
23
25
  module Mixlib
24
26
  module Log
25
27
 
28
+ include Logging
26
29
  @logger, @loggers = nil
27
30
 
28
- LEVELS = { :debug => Logger::DEBUG, :info => Logger::INFO, :warn => Logger::WARN, :error => Logger::ERROR, :fatal => Logger::FATAL }.freeze
29
- LEVEL_NAMES = LEVELS.invert.freeze
30
-
31
31
  def reset!
32
32
  close!
33
33
  @logger, @loggers = nil, nil
@@ -82,6 +82,8 @@ module Mixlib
82
82
  @logger.formatter = Mixlib::Log::Formatter.new() if @logger.respond_to?(:formatter=)
83
83
  @logger.level = Logger::WARN
84
84
  @configured = true
85
+ @parent = nil
86
+ @metadata = {}
85
87
  @logger
86
88
  end
87
89
 
@@ -92,6 +94,7 @@ module Mixlib
92
94
 
93
95
  # Sets the level for the Logger object by symbol. Valid arguments are:
94
96
  #
97
+ # :trace
95
98
  # :debug
96
99
  # :info
97
100
  # :warn
@@ -101,7 +104,7 @@ module Mixlib
101
104
  # Throws an ArgumentError if you feed it a bogus log level.
102
105
  def level=(new_level)
103
106
  level_int = LEVEL_NAMES.key?(new_level) ? new_level : LEVELS[new_level]
104
- raise ArgumentError, "Log level must be one of :debug, :info, :warn, :error, or :fatal" if level_int.nil?
107
+ raise ArgumentError, "Log level must be one of :trace, :debug, :info, :warn, :error, or :fatal" if level_int.nil?
105
108
  loggers.each { |l| l.level = level_int }
106
109
  end
107
110
 
@@ -113,38 +116,45 @@ module Mixlib
113
116
  end
114
117
  end
115
118
 
116
- # Define the standard logger methods on this class programmatically.
117
- # No need to incur method_missing overhead on every log call.
118
- [:debug, :info, :warn, :error, :fatal].each do |method_name|
119
- class_eval(<<-METHOD_DEFN, __FILE__, __LINE__)
120
- def #{method_name}(msg=nil, &block)
121
- loggers.each {|l| l.#{method_name}(msg, &block) }
122
- end
123
- METHOD_DEFN
124
- end
125
-
126
119
  # Define the methods to interrogate the logger for the current log level.
127
120
  # Note that we *only* query the default logger (@logger) and not any other
128
121
  # loggers that may have been added, even though it is possible to configure
129
122
  # two (or more) loggers at different log levels.
130
- [:debug?, :info?, :warn?, :error?, :fatal?].each do |method_name|
131
- class_eval(<<-METHOD_DEFN, __FILE__, __LINE__)
132
- def #{method_name}
133
- logger.#{method_name}
134
- end
135
- METHOD_DEFN
123
+ [:trace?, :debug?, :info?, :warn?, :error?, :fatal?].each do |method_name|
124
+ define_method(method_name) do
125
+ logger.send(method_name)
126
+ end
136
127
  end
137
128
 
138
129
  def <<(msg)
139
130
  loggers.each { |l| l << msg }
140
131
  end
141
132
 
142
- def add(severity, message = nil, progname = nil, &block)
143
- loggers.each { |l| l.add(severity, message, progname, &block) }
133
+ def add(severity, message = nil, progname = nil, data: {}, &block)
134
+ message, progname, data = yield if block_given?
135
+ data = metadata.merge(data) if metadata.kind_of?(Hash) && data.kind_of?(Hash)
136
+ loggers.each do |l|
137
+ # if we don't have any metadata, let's not do the potentially expensive
138
+ # merging and managing that this call requires
139
+ if l.respond_to?(:add_data) && !data.nil? && !data.empty?
140
+ l.add_data(severity, message, progname, data: data)
141
+ else
142
+ l.add(severity, message, progname)
143
+ end
144
+ end
144
145
  end
145
146
 
146
147
  alias :log :add
147
148
 
149
+ def with_child(metadata = {})
150
+ child = Child.new(self, metadata)
151
+ if block_given?
152
+ yield child
153
+ else
154
+ child
155
+ end
156
+ end
157
+
148
158
  # Passes any other method calls on directly to the underlying Logger object created with init. If
149
159
  # this method gets hit before a call to Mixlib::Logger.init has been made, it will call
150
160
  # Mixlib::Logger.init() with no arguments.
@@ -0,0 +1,60 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2018 Chef Software, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "mixlib/log/logging"
18
+
19
+ module Mixlib
20
+ module Log
21
+ class Child
22
+ include Mixlib::Log::Logging
23
+
24
+ attr_reader :parent
25
+ def initialize(parent, metadata = {})
26
+ @parent = parent
27
+ @metadata = metadata
28
+ end
29
+
30
+ def level
31
+ parent.level
32
+ end
33
+
34
+ # Define the methods to interrogate the logger for the current log level.
35
+ # Note that we *only* query the default logger (@logger) and not any other
36
+ # loggers that may have been added, even though it is possible to configure
37
+ # two (or more) loggers at different log levels.
38
+ [:trace?, :debug?, :info?, :warn?, :error?, :fatal?].each do |method_name|
39
+ define_method(method_name) do
40
+ parent.send(method_name)
41
+ end
42
+ end
43
+
44
+ def add(severity, message = nil, progname = nil, data: {}, &block)
45
+ data = metadata.merge(data) if data.kind_of?(Hash)
46
+ parent.send(:pass, severity, message, progname, data: data, &block)
47
+ end
48
+
49
+ def with_child(metadata = {})
50
+ child = Child.new(self, metadata)
51
+ if block_given?
52
+ yield child
53
+ else
54
+ child
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+ end
@@ -42,15 +42,25 @@ module Mixlib
42
42
  # put through "object.inspect"
43
43
  def msg2str(msg)
44
44
  case msg
45
+ when ::Hash
46
+ if msg.has_key?(:err)
47
+ format_exception(msg[:err])
48
+ else
49
+ msg[:msg]
50
+ end
45
51
  when ::String
46
52
  msg
47
53
  when ::Exception
48
- "#{ msg.message } (#{ msg.class })\n" <<
49
- (msg.backtrace || []).join("\n")
54
+ format_exception(msg)
50
55
  else
51
56
  msg.inspect
52
57
  end
53
58
  end
59
+
60
+ def format_exception(msg)
61
+ "#{msg.message} (#{msg.class})\n" <<
62
+ (msg.backtrace || []).join("\n")
63
+ end
54
64
  end
55
65
  end
56
66
  end
@@ -0,0 +1,106 @@
1
+ require "logger"
2
+ require "mixlib/log/logging"
3
+
4
+ # A subclass of Ruby's stdlib Logger with all the mutex and logrotation stuff
5
+ # ripped out, and metadata added in.
6
+ module Mixlib
7
+ module Log
8
+ class Logger < ::Logger
9
+
10
+ include Logging
11
+ #
12
+ # === Synopsis
13
+ #
14
+ # Logger.new(name, shift_age = 7, shift_size = 1048576)
15
+ # Logger.new(name, shift_age = 'weekly')
16
+ #
17
+ # === Args
18
+ #
19
+ # +logdev+::
20
+ # The log device. This is a filename (String) or IO object (typically
21
+ # +STDOUT+, +STDERR+, or an open file).
22
+ # +shift_age+::
23
+ # Number of old log files to keep, *or* frequency of rotation (+daily+,
24
+ # +weekly+ or +monthly+).
25
+ # +shift_size+::
26
+ # Maximum logfile size (only applies when +shift_age+ is a number).
27
+ #
28
+ # === Description
29
+ #
30
+ # Create an instance.
31
+ #
32
+ def initialize(logdev)
33
+ @progname = nil
34
+ @level = DEBUG
35
+ @default_formatter = Formatter.new
36
+ @formatter = nil
37
+ @logdev = nil
38
+ if logdev
39
+ @logdev = LocklessLogDevice.new(logdev)
40
+ end
41
+ end
42
+
43
+ def add_data(severity, message, progname, data: {})
44
+ return true if @logdev.nil? || severity < @level
45
+ data ||= {}
46
+ if message.kind_of?(::Exception)
47
+ data[:err] = message
48
+ else
49
+ data[:msg] = message
50
+ end
51
+ @logdev.write(
52
+ format_message(format_severity(severity), Time.now, progname, data))
53
+ true
54
+ end
55
+ alias_method :add, :add_data
56
+
57
+ class LocklessLogDevice < LogDevice
58
+
59
+ def initialize(log = nil)
60
+ @dev = @filename = @shift_age = @shift_size = nil
61
+ if log.respond_to?(:write) && log.respond_to?(:close)
62
+ @dev = log
63
+ else
64
+ @dev = open_logfile(log)
65
+ @filename = log
66
+ end
67
+ @dev.sync = true
68
+ end
69
+
70
+ def write(message)
71
+ @dev.write(message)
72
+ rescue Exception => ignored
73
+ warn("log writing failed. #{ignored}")
74
+ end
75
+
76
+ def close
77
+ @dev.close rescue nil
78
+ end
79
+
80
+ private
81
+
82
+ def open_logfile(filename)
83
+ if FileTest.exist?(filename)
84
+ open(filename, (File::WRONLY | File::APPEND))
85
+ else
86
+ create_logfile(filename)
87
+ end
88
+ end
89
+
90
+ def create_logfile(filename)
91
+ logdev = open(filename, (File::WRONLY | File::APPEND | File::CREAT))
92
+ add_log_header(logdev)
93
+ logdev
94
+ end
95
+
96
+ def add_log_header(file)
97
+ file.write(
98
+ "# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName]
99
+ )
100
+ end
101
+
102
+ end
103
+
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,53 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2018 Chef Software, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "logger"
18
+
19
+ module Mixlib
20
+ module Log
21
+ module Logging
22
+ include ::Logger::Severity
23
+
24
+ TRACE = -1
25
+
26
+ SEV_LABEL = %w{TRACE DEBUG INFO WARN ERROR FATAL ANY}.each(&:freeze).freeze
27
+
28
+ def to_label(sev)
29
+ SEV_LABEL[sev + 1] || -"ANY"
30
+ end
31
+
32
+ LEVELS = { :trace => TRACE, :debug => DEBUG, :info => INFO, :warn => WARN, :error => ERROR, :fatal => FATAL }.freeze
33
+ LEVEL_NAMES = LEVELS.invert.freeze
34
+
35
+ attr_accessor :metadata
36
+
37
+ def pass(severity, args, progname = nil, data: {}, &block)
38
+ args, progname, data = yield if block_given?
39
+ add(severity, args, progname, data: data)
40
+ end
41
+
42
+ # Define the standard logger methods on this class programmatically.
43
+ # No need to incur method_missing overhead on every log call.
44
+ [:trace, :debug, :info, :warn, :error, :fatal].each do |method_name|
45
+ level = LEVELS[method_name]
46
+ define_method(method_name) do |msg = nil, data: {}, &block|
47
+ pass(level, msg, data: data, &block)
48
+ end
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -1,5 +1,5 @@
1
1
  module Mixlib
2
2
  module Log
3
- VERSION = "1.7.1"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -13,9 +13,10 @@ Gem::Specification.new do |gem|
13
13
  gem.has_rdoc = true
14
14
  gem.extra_rdoc_files = ["README.md", "LICENSE", "NOTICE"]
15
15
  gem.files = Dir["lib/**/*"] + Dir["spec/**/*"] + ["Gemfile", "Rakefile", ".gemtest", "mixlib-log.gemspec"]
16
+ gem.required_ruby_version = ">= 2.2"
16
17
  gem.add_development_dependency "rake"
17
- gem.add_development_dependency "rspec", "~> 3.4"
18
- gem.add_development_dependency "chefstyle", "~> 0.3"
18
+ gem.add_development_dependency "rspec", "~> 3.7"
19
+ gem.add_development_dependency "chefstyle"
19
20
  gem.add_development_dependency "cucumber"
20
- gem.add_development_dependency "github_changelog_generator", "1.11.3"
21
+ gem.add_development_dependency "github_changelog_generator", ">= 1.11.3"
21
22
  end
@@ -0,0 +1,99 @@
1
+ #
2
+ # Copyright:: Copyright (c) 2018 Chef Software, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "tempfile"
19
+ require "stringio"
20
+ require "spec_helper"
21
+
22
+ RSpec.describe Mixlib::Log::Child do
23
+ before do
24
+ Logit.reset!
25
+ Logit.init(io)
26
+ Logit.level = :warn
27
+ end
28
+
29
+ let(:io) { StringIO.new }
30
+
31
+ let(:child) { Logit.with_child }
32
+
33
+ it "has a parent" do
34
+ expect(child.parent).to be(Logit)
35
+ end
36
+
37
+ it "accepts a message" do
38
+ Logit.with_child { |l| l.add(Logger::WARN, "a message") }
39
+ expect(io.string).to match(/a message$/)
40
+ end
41
+
42
+ context "with structured data" do
43
+ it "can be created with metadata" do
44
+ expect(Logit).to receive(:pass).with(Mixlib::Log::LEVELS[:warn], "a message", nil, data: { child: "true" })
45
+ Logit.with_child({ child: "true" }) { |l| l.warn("a message") }
46
+ end
47
+
48
+ it "a message can be logged" do
49
+ expect(Logit).to receive(:pass).with(Mixlib::Log::LEVELS[:warn], "a message", nil, data: { child: "true" })
50
+ Logit.with_child { |l| l.warn("a message", data: { child: "true" }) }
51
+ end
52
+
53
+ context "merges properly" do
54
+ it "in the simple case" do
55
+ expect(Logit).to receive(:pass).with(Mixlib::Log::LEVELS[:warn], "a message", nil, data: { child: "true", meta: "data" })
56
+ Logit.with_child(meta: "data") { |l| l.warn("a message", data: { child: "true" }) }
57
+ end
58
+
59
+ it "when overwriting" do
60
+ expect(Logit).to receive(:pass).with(Mixlib::Log::LEVELS[:warn], "a message", nil, data: { child: "true", meta: "overwritten" })
61
+ Logit.with_child(meta: "data") { |l| l.warn("a message", data: { child: "true", meta: "overwritten" }) }
62
+ end
63
+ end
64
+
65
+ context "when receiving a message from a child" do
66
+ it "passes data on" do
67
+ expect(Logit).to receive(:pass).with(Mixlib::Log::LEVELS[:warn], "a message", nil, data: { child: "true", parent: "first" })
68
+ child.metadata = { parent: "first" }
69
+ child.with_child { |l| l.warn("a message", data: { child: "true" }) }
70
+ end
71
+
72
+ it "merges its own data" do
73
+ expect(Logit).to receive(:pass).with(Mixlib::Log::LEVELS[:warn], "a message", nil, data: { child: "true", parent: "second" })
74
+ child.metadata = { parent: "first" }
75
+ child.with_child { |l| l.warn("a message", data: { child: "true", parent: "second" }) }
76
+ end
77
+ end
78
+ end
79
+
80
+ context "sends a message to the parent" do
81
+ %i{ debug info warn error fatal }.each do |level|
82
+ it "at #{level}" do
83
+ expect(Logit).to receive(:pass).with(Mixlib::Log::LEVELS[level], "a #{level} message", nil, data: {})
84
+ Logit.level = level
85
+ child.send(level, "a #{level} message")
86
+ end
87
+ end
88
+ end
89
+
90
+ context "can query the parent's level" do
91
+ %i{ debug info warn error fatal }.each do |level|
92
+ it "at #{level}" do
93
+ query = "#{level}?".to_sym
94
+ Logit.level = level
95
+ expect(child.send(query)).to be(true)
96
+ end
97
+ end
98
+ end
99
+ end
@@ -19,7 +19,7 @@
19
19
  require "time"
20
20
  require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
21
21
 
22
- describe Mixlib::Log::Formatter do
22
+ RSpec.describe Mixlib::Log::Formatter do
23
23
  before(:each) do
24
24
  @formatter = Mixlib::Log::Formatter.new
25
25
  end
@@ -48,4 +48,17 @@ describe Mixlib::Log::Formatter do
48
48
  expect(@formatter.call("monkey", Time.new, "test", "mos def")).to eq("monkey: mos def\n")
49
49
  end
50
50
 
51
+ context "with structured data" do
52
+ let(:data) { {} }
53
+
54
+ it "should format a message" do
55
+ data[:msg] = "nuthin new"
56
+ expect(@formatter.msg2str(data)).to eq("nuthin new")
57
+ end
58
+
59
+ it "should format an exception" do
60
+ data[:err] = IOError.new("legendary roots crew")
61
+ expect(@formatter.msg2str(data)).to eq("legendary roots crew (IOError)\n")
62
+ end
63
+ end
51
64
  end
@@ -19,16 +19,26 @@
19
19
 
20
20
  require "tempfile"
21
21
  require "stringio"
22
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "spec_helper"))
22
+ require "spec_helper"
23
23
 
24
24
  class LoggerLike
25
25
  attr_accessor :level
26
- attr_reader :messages
26
+ attr_reader :messages, :data
27
27
  def initialize
28
28
  @messages = ""
29
+ @data = []
29
30
  end
30
31
 
31
- [:debug, :info, :warn, :error, :fatal].each do |method_name|
32
+ def add_data(severity, message = nil, progname = nil, data: {})
33
+ @messages << message
34
+ @data << data
35
+ end
36
+
37
+ def add(severity, message = nil, progname = nil, data: {})
38
+ @messages << message
39
+ end
40
+
41
+ [:trace, :debug, :info, :warn, :error, :fatal].each do |method_name|
32
42
  class_eval(<<-E)
33
43
  def #{method_name}(message)
34
44
  @messages << message
@@ -37,7 +47,7 @@ class LoggerLike
37
47
  end
38
48
  end
39
49
 
40
- describe Mixlib::Log do
50
+ RSpec.describe Mixlib::Log do
41
51
 
42
52
  # Since we are testing class behaviour for an instance variable
43
53
  # that gets set once, we need to reset it prior to each example [cb]
@@ -64,6 +74,7 @@ describe Mixlib::Log do
64
74
  it "uses the logger provided when initialized with a logger like object" do
65
75
  logger = LoggerLike.new
66
76
  Logit.init(logger)
77
+ Logit.level = :debug
67
78
  Logit.debug "qux"
68
79
  expect(logger.messages).to match(/qux/)
69
80
  end
@@ -84,13 +95,14 @@ describe Mixlib::Log do
84
95
  expect(Logit.configured?).to be true
85
96
  end
86
97
 
87
- it "should set the log level using the binding form, with :debug, :info, :warn, :error, or :fatal" do
98
+ it "should set the log level using the binding form, with :trace, :debug, :info, :warn, :error, or :fatal" do
88
99
  levels = {
89
- :debug => Logger::DEBUG,
90
- :info => Logger::INFO,
91
- :warn => Logger::WARN,
92
- :error => Logger::ERROR,
93
- :fatal => Logger::FATAL,
100
+ :trace => Mixlib::Log::TRACE,
101
+ :debug => Mixlib::Log::DEBUG,
102
+ :info => Mixlib::Log::INFO,
103
+ :warn => Mixlib::Log::WARN,
104
+ :error => Mixlib::Log::ERROR,
105
+ :fatal => Mixlib::Log::FATAL,
94
106
  }
95
107
  levels.each do |symbol, constant|
96
108
  Logit.level = symbol
@@ -106,13 +118,14 @@ describe Mixlib::Log do
106
118
  expect(logdev.string).to match(/the_message/)
107
119
  end
108
120
 
109
- it "should set the log level using the method form, with :debug, :info, :warn, :error, or :fatal" do
121
+ it "should set the log level using the method form, with :trace, :debug, :info, :warn, :error, or :fatal" do
110
122
  levels = {
111
- :debug => Logger::DEBUG,
112
- :info => Logger::INFO,
113
- :warn => Logger::WARN,
114
- :error => Logger::ERROR,
115
- :fatal => Logger::FATAL,
123
+ :trace => Mixlib::Log::TRACE,
124
+ :debug => Mixlib::Log::DEBUG,
125
+ :info => Mixlib::Log::INFO,
126
+ :warn => Mixlib::Log::WARN,
127
+ :error => Mixlib::Log::ERROR,
128
+ :fatal => Mixlib::Log::FATAL,
116
129
  }
117
130
  levels.each do |symbol, constant|
118
131
  Logit.level(symbol)
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
3
  # Author:: Christopher Brown (<cb@chef.io>)
4
- # Copyright:: Copyright (c) 2008-2016 Chef Software, Inc..
4
+ # Copyright:: Copyright (c) 2008-2016 Chef Software, Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,6 +24,10 @@ require "rspec"
24
24
  require "mixlib/log"
25
25
  require "mixlib/log/formatter"
26
26
 
27
+ RSpec.configure do |config|
28
+ config.disable_monkey_patching!
29
+ end
30
+
27
31
  class Logit
28
32
  extend Mixlib::Log
29
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixlib-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-12 00:00:00.000000000 Z
11
+ date: 2018-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.4'
33
+ version: '3.7'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.4'
40
+ version: '3.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: chefstyle
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0.3'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0.3'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: cucumber
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -70,14 +70,14 @@ dependencies:
70
70
  name: github_changelog_generator
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 1.11.3
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.11.3
83
83
  description:
@@ -96,9 +96,13 @@ files:
96
96
  - README.md
97
97
  - Rakefile
98
98
  - lib/mixlib/log.rb
99
+ - lib/mixlib/log/child.rb
99
100
  - lib/mixlib/log/formatter.rb
101
+ - lib/mixlib/log/logger.rb
102
+ - lib/mixlib/log/logging.rb
100
103
  - lib/mixlib/log/version.rb
101
104
  - mixlib-log.gemspec
105
+ - spec/mixlib/log/child_spec.rb
102
106
  - spec/mixlib/log/formatter_spec.rb
103
107
  - spec/mixlib/log_spec.rb
104
108
  - spec/spec_helper.rb
@@ -114,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
118
  requirements:
115
119
  - - ">="
116
120
  - !ruby/object:Gem::Version
117
- version: '0'
121
+ version: '2.2'
118
122
  required_rubygems_version: !ruby/object:Gem::Requirement
119
123
  requirements:
120
124
  - - ">="
@@ -122,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
126
  version: '0'
123
127
  requirements: []
124
128
  rubyforge_project:
125
- rubygems_version: 2.6.4
129
+ rubygems_version: 2.7.3
126
130
  signing_key:
127
131
  specification_version: 4
128
132
  summary: A gem that provides a simple mixin for log functionality