module Concurrent::Concern::Logging

Include where logging is needed

@!visibility private

Public Instance Methods

log(level, progname, message = nil, &block) click to toggle source

Logs through {Concurrent.global_logger}, it can be overridden by setting @logger @param [Integer] level one of Logger::Severity constants @param [String] progname e.g. a path of an Actor @param [String, nil] message when nil block is used to generate the message @yieldreturn [String] a message

# File lib/concurrent-ruby/concurrent/concern/logging.rb, line 17
def log(level, progname, message = nil, &block)
  #NOTE: Cannot require 'concurrent/configuration' above due to circular references.
  #      Assume that the gem has been initialized if we've gotten this far.
  logger = if defined?(@logger) && @logger
             @logger
           else
             Concurrent.global_logger
           end
  logger.call level, progname, message, &block
rescue => error
  $stderr.puts "`Concurrent.configuration.logger` failed to log #{[level, progname, message, block]}\n" +
    "#{error.message} (#{error.class})\n#{error.backtrace.join "\n"}"
end