module BerkeleyLibrary::Logging

Include this module to get access to a shared global logger.

Constants

ENV_PREDICATES
FALLBACK_ENV
LOG_METHODS

Public Class Methods

env() click to toggle source
# File lib/berkeley_library/logging/env.rb, line 10
def env
  return Rails.env if defined?(Rails)

  @env ||= begin
    # Note: can't just self.env= b/c it returns the wrong value -- see
    # https://stackoverflow.com/q/65226532/27358
    env = (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || FALLBACK_ENV)
    ensure_rails_env_like(env)
  end
end
env=(v) click to toggle source
# File lib/berkeley_library/logging/env.rb, line 21
def env=(v)
  if defined?(Rails)
    Rails.env = v
  else
    @env = ensure_rails_env_like(v)
  end
end
logger() click to toggle source
# File lib/berkeley_library/logging.rb, line 19
def logger
  @logger ||= BerkeleyLibrary::Logging::Loggers.default_logger
end
logger=(v) click to toggle source
# File lib/berkeley_library/logging.rb, line 23
def logger=(v)
  @logger = (ensure_logger(v) unless v.nil?)
end

Private Class Methods

ensure_logger(v) click to toggle source
# File lib/berkeley_library/logging.rb, line 31
def ensure_logger(v)
  return v if (missing = LOG_METHODS.reject { |m| v.respond_to?(m) }).empty?

  raise ArgumentError, "Not a logger: #{v.inspect} does not respond to #{missing.join(', ')}"
end
ensure_rails_env_like(v) click to toggle source
# File lib/berkeley_library/logging/env.rb, line 31
def ensure_rails_env_like(v)
  return v if ENV_PREDICATES.all? { |p| v.respond_to?(p) }

  ActiveSupport::StringInquirer.new(v)
end

Public Instance Methods

logger() click to toggle source
# File lib/berkeley_library/logging.rb, line 10
def logger
  Logging.logger
end
logger=(v) click to toggle source
# File lib/berkeley_library/logging.rb, line 14
def logger=(v)
  Logging.logger = v
end