module NewspaperWorks::Logging

Attributes

configured[RW]

Public Instance Methods

configure_logger(name) click to toggle source

Should be called by consuming class, prior to use of .logger method

has checks to prevent duplicate configuration if already configured.
# File lib/newspaper_works/logging.rb, line 40
def configure_logger(name)
  @logger = Rails.logger
  return if NewspaperWorks::Logging.configured.include?(name)
  path = Rails.root.join("log/#{name}.log")
  @named_log = ActiveSupport::Logger.new(path)
  @named_log.formatter = proc do |_severity, datetime, _progname, msg|
    "#{datetime}: #{msg}\n"
  end
  # rails will log to named_log in addition to any other configured
  #   or default logging destinations:
  @logger.extend(ActiveSupport::Logger.broadcast(@named_log))
  NewspaperWorks::Logging.configured.push(name)
end
log(severity, msg, progname = nil, &block) click to toggle source

Log message, as in standard logger, but use message_format on message. @param severity [Integer] log level/severity, e.g. Logger::INFO == 2 @param msg [String] Log message to be formatted by message_format @param progname [String] (optional)

# File lib/newspaper_works/logging.rb, line 16
def log(severity, msg, progname = nil, &block)
  logger.add(severity, message_format(msg), progname, &block)
end
logger() click to toggle source
# File lib/newspaper_works/logging.rb, line 8
def logger
  @logger = Rails.logger
end
message_format(msg) click to toggle source

format message, distinct from per-output formatting, to be used in

all logging channels Rails.logger broadcasts to.  This wrapping
indicates in parenthetical prefix which class is acting to
produce message.

@param msg [String]

# File lib/newspaper_works/logging.rb, line 34
def message_format(msg)
  "(#{self.class}) #{msg}"
end
write_log(msg, severity = Logger::INFO, progname = nil) click to toggle source

Simpler alternative to .log, with default severity, message_format

wrapping.

@param msg [String] Log message to be formatted by message_format @param severity [Integer] log level/severity, e.g. Logger::INFO == 2 @param progname [String]

# File lib/newspaper_works/logging.rb, line 25
def write_log(msg, severity = Logger::INFO, progname = nil)
  logger.add(severity, message_format(msg), progname)
end