class PiscinaLogger

Attributes

configuration[RW]

Public Class Methods

configure() { |configuration| ... } click to toggle source

Configure!

# File lib/piscina/piscina_logger.rb, line 55
def self.configure
  self.configuration ||= Configuration.new
  yield(configuration)
end
construct_path_to_log(log_name) click to toggle source
# File lib/piscina/piscina_logger.rb, line 29
def self.construct_path_to_log(log_name)
  raise "No logging directory defined" unless PiscinaLogger.configuration.log_directory

  log_dir = PiscinaLogger.configuration.log_directory
  File.join(log_dir, "#{log_name}_piscina.log")
end
create_logger(log_name) click to toggle source
# File lib/piscina/piscina_logger.rb, line 16
def self.create_logger(log_name)
  log_path = construct_path_to_log(log_name)
  logger = Logger.new(log_path, 'daily')

  logger.formatter = proc do |severity, datetime, progname, msg|
     "#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%L')}]: #{msg}\n"
  end

  logger.level = PiscinaLogger.configuration.logging_level

  logger
end
new(log_name) click to toggle source
# File lib/piscina/piscina_logger.rb, line 8
def initialize(log_name)
  # Create a buffered pool of size one that will handle writing to the logs
  @thread_pool = Executors.newFixedThreadPool(1)

  # Creates a standard Ruby Logger
  @logger = PiscinaLogger.create_logger(log_name)
end

Public Instance Methods

shutdown() click to toggle source
# File lib/piscina/piscina_logger.rb, line 48
def shutdown
  # TODO wait for pool to close down before closing logger
  @thread_pool.shutdown
  @logger.close
end
write(message, level) click to toggle source
# File lib/piscina/piscina_logger.rb, line 36
def write(message, level)
  @thread_pool.execute do
    @logger.send(level, message)
  end
end