Skip to content

Commit

Permalink
accept log messages via block
Browse files Browse the repository at this point in the history
fixes #25
  • Loading branch information
komidore64 committed May 1, 2024
1 parent 34039a1 commit 70b438b
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 15 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
/_yardoc/
/coverage/
/doc/
/log/
/pkg/
/spec/reports/
/tmp/
Expand Down
41 changes: 26 additions & 15 deletions lib/dry/logger/dispatcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,53 +110,53 @@ def initialize(
# @see Dispatcher#log
# @api public
# @return [true]
def unknown(message = nil, **payload)
log(:unknown, message, **payload)
def unknown(message = nil, **payload, &block)
log(:unknown, message, **payload, &block)
end

# Log an entry with DEBUG severity
#
# @see Dispatcher#log
# @api public
# @return [true]
def debug(message = nil, **payload)
log(:debug, message, **payload)
def debug(message = nil, **payload, &block)
log(:debug, message, **payload, &block)
end

# Log an entry with INFO severity
#
# @see Dispatcher#log
# @api public
# @return [true]
def info(message = nil, **payload)
log(:info, message, **payload)
def info(message = nil, **payload, &block)
log(:info, message, **payload, &block)
end

# Log an entry with WARN severity
#
# @see Dispatcher#log
# @api public
# @return [true]
def warn(message = nil, **payload)
log(:warn, message, **payload)
def warn(message = nil, **payload, &block)
log(:warn, message, **payload, &block)
end

# Log an entry with ERROR severity
#
# @see Dispatcher#log
# @api public
# @return [true]
def error(message = nil, **payload)
log(:error, message, **payload)
def error(message = nil, **payload, &block)
log(:error, message, **payload, &block)
end

# Log an entry with FATAL severity
#
# @see Dispatcher#log
# @api public
# @return [true]
def fatal(message = nil, **payload)
log(:fatal, message, **payload)
def fatal(message = nil, **payload, &block)
log(:fatal, message, **payload, &block)
end

BACKEND_METHODS.each do |name|
Expand All @@ -179,6 +179,9 @@ def level
# @example logging a message
# logger.log(:info, "Hello World")
#
# @example logging a message by passing a block
# logger.log(:debug, "Sidecar") { "Hello World" }
#
# @example logging payload
# logger.log(:info, verb: "GET", path: "/users")
#
Expand All @@ -196,17 +199,25 @@ def level
# @param [Symbol] severity The log severity name
# @param [String] message Optional message
# @param [Hash] payload Optional log entry payload
# @yield
# @yieldreturn [String] Message to be logged
#
# @since 1.0.0
# @return [true]
# @api public
def log(severity, message = nil, **payload)
def log(severity, message = nil, **payload, &block)
case message
when Hash then log(severity, nil, **message)
when Hash then log(severity, **message, &block)
else
if block
progname = message
message = block.call
end
progname ||= id

entry = Entry.new(
clock: clock,
progname: id,
progname: progname,
severity: severity,
tags: @tags,
message: message,
Expand Down
16 changes: 16 additions & 0 deletions spec/dry/logger_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,22 @@

expect(output).to match("#{message} test=true")
end

it "logs to $stdout by default using a plain text block message" do
message = "hello, world"

logger.info { message }

expect(output).to match(message)
end

it "logs to $stdout by default using a plain text block message and payload" do
message = "hello, world"

logger.info(test: true) { message }

expect(output).to match("#{message} test=true")
end
end

context "adding backends via block only" do
Expand Down

0 comments on commit 70b438b

Please sign in to comment.