summaryrefslogtreecommitdiff
path: root/lib/mixlib/log/child.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mixlib/log/child.rb')
-rw-r--r--lib/mixlib/log/child.rb28
1 files changed, 9 insertions, 19 deletions
diff --git a/lib/mixlib/log/child.rb b/lib/mixlib/log/child.rb
index 2676b69..7234043 100644
--- a/lib/mixlib/log/child.rb
+++ b/lib/mixlib/log/child.rb
@@ -14,24 +14,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+require "mixlib/log/logging"
+
module Mixlib
module Log
class Child
- # include Mixlib::Log
+ include Mixlib::Log::Logging
attr_reader :parent
- def initialize(parent)
+ def initialize(parent, metadata = {})
@parent = parent
+ @metadata = metadata
end
def level
parent.level
end
- def pass(severity, args, progname = nil, &block)
- parent.pass(severity, args, progname, &block)
- end
-
# Define the methods to interrogate the logger for the current log level.
# Note that we *only* query the default logger (@logger) and not any other
# loggers that may have been added, even though it is possible to configure
@@ -39,23 +38,14 @@ module Mixlib
[:debug?, :info?, :warn?, :error?, :fatal?].each do |method_name|
class_eval(<<-METHOD_DEFN, __FILE__, __LINE__)
def #{method_name}
- parent.#{method_name}
+ parent.send(:#{method_name})
end
METHOD_DEFN
end
- # Define the standard logger methods on this class programmatically.
- # No need to incur method_missing overhead on every log call.
- [:debug, :info, :warn, :error, :fatal].each do |method_name|
- class_eval(<<-METHOD_DEFN, __FILE__, __LINE__)
- def #{method_name}(msg=nil, &block)
- pass(:#{method_name}, msg, &block)
- end
- METHOD_DEFN
- end
-
- def add(severity, message = nil, progname = nil, &block)
- parent.pass(severity, message, progname, &block)
+ def add(severity, message = nil, progname = nil, data: {}, &block)
+ data = metadata.merge(data) if data.kind_of?(Hash)
+ parent.send(:pass, severity, message, progname, data: data, &block)
end
end