mirror of
https://github.com/meineerde/rackstash.git
synced 2025-12-19 15:01:12 +00:00
Allow to write a Hash to the Logger to deep_merge fields
This commit is contained in:
parent
33ee63bffb
commit
4a62e3d189
@ -222,14 +222,16 @@ module Rackstash
|
||||
#
|
||||
# @param severity [Integer] The log severity. One of the {SEVERITIES}
|
||||
# consants.
|
||||
# @param msg [#to_s, Exception, nil] The log message. A `String` or
|
||||
# `Exception`. If unset, we try to use the return value of the optional
|
||||
# block.
|
||||
# @param msg [#to_s, ::Hash, Exception, nil] The log message. If unset, we
|
||||
# try, to use the return value of the optional block. If we get a `String`
|
||||
# or `Exception`, we log a new {Message}. If it's a Hash, we deep_merge it
|
||||
# into the current buffer's fields instead.
|
||||
# @param progname [String, nil] The program name. Can be omitted. It's
|
||||
# treated as a message if no `msg` and `block` are given.
|
||||
# @yield If `message` is `nil`, we yield to the block to get a message
|
||||
# string.
|
||||
# @return [String] The resolved unformatted message string
|
||||
# @return [Message, ::Hash, nil] The merged Hash, or the resolved {Message}
|
||||
# or `nil` if nothing was logged
|
||||
def add(severity, msg = nil, progname = nil)
|
||||
severity = severity ? Integer(severity) : UNKNOWN
|
||||
return if @level > severity
|
||||
@ -244,21 +246,19 @@ module Rackstash
|
||||
end
|
||||
end
|
||||
|
||||
time = Time.now.utc.freeze
|
||||
formatted_msg = formatter.call(
|
||||
severity_label(severity),
|
||||
time,
|
||||
progname,
|
||||
case msg
|
||||
when Hash, Rackstash::Fields::Hash
|
||||
buffer.fields.deep_merge!(msg)
|
||||
msg
|
||||
)
|
||||
buffer.add_message Message.new(
|
||||
formatted_msg,
|
||||
time: time,
|
||||
progname: progname,
|
||||
severity: severity
|
||||
)
|
||||
|
||||
formatted_msg
|
||||
else
|
||||
time = Time.now.utc.freeze
|
||||
buffer.add_message Message.new(
|
||||
formatter.call(Rackstash.severity_label(severity), time, progname, msg),
|
||||
time: time,
|
||||
progname: progname,
|
||||
severity: severity
|
||||
)
|
||||
end
|
||||
end
|
||||
alias log add
|
||||
|
||||
@ -290,9 +290,5 @@ module Rackstash
|
||||
def buffer
|
||||
buffer_stack.current
|
||||
end
|
||||
|
||||
def severity_label(severity)
|
||||
SEVERITY_LABELS[severity] || SEVERITY_LABELS.last
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -138,8 +138,7 @@ describe Rackstash::Logger do
|
||||
|
||||
let(:buffer) {
|
||||
double('Rackstash::Buffer').tap do |buffer|
|
||||
expect(buffer).to receive(:add_message) { |message| messages << message }
|
||||
.at_least(:once)
|
||||
allow(buffer).to receive(:add_message) { |message| messages << message }
|
||||
end
|
||||
}
|
||||
|
||||
@ -153,12 +152,9 @@ describe Rackstash::Logger do
|
||||
|
||||
before do
|
||||
class_double('Rackstash::Message').as_stubbed_const.tap do |klass|
|
||||
expect(klass).to receive(:new) { |msg, **kwargs| { message: msg, **kwargs } }
|
||||
.at_least(:once)
|
||||
allow(klass).to receive(:new) { |msg, **kwargs| { message: msg, **kwargs } }
|
||||
end
|
||||
expect(logger).to receive(:buffer_stack)
|
||||
.at_least(:once)
|
||||
.and_return(buffer_stack)
|
||||
allow(logger).to receive(:buffer_stack).and_return(buffer_stack)
|
||||
end
|
||||
|
||||
it 'sets the current time as UTC to the message' do
|
||||
@ -288,6 +284,16 @@ describe Rackstash::Logger do
|
||||
)
|
||||
end
|
||||
|
||||
it 'merges fields if message is a Hash' do
|
||||
fields = instance_double('Rackstash::Fields::Hash')
|
||||
expect(buffer).to receive(:fields).and_return(fields)
|
||||
expect(fields).to receive(:deep_merge!).with(foo: 'bar')
|
||||
|
||||
expect(buffer).not_to receive(:add_message)
|
||||
|
||||
expect(logger.add(0, { foo: 'bar' })).to eql(foo: 'bar')
|
||||
end
|
||||
|
||||
it 'can use debug shortcut' do
|
||||
expect(logger).to receive(:add).with(0, 'Debug').and_call_original
|
||||
logger.debug('Debug')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user