module Sinatra::Logger

Constants

VERSION

Public Class Methods

logger(config) click to toggle source
# File lib/sinatra/logger.rb, line 26
def self.logger(config)
  if config[:filename].nil?
    raise "Sinatra::Logger -- File name is not specified. Please, set `filename` in the configuration block!"
  end

  config[:level] ||= :trace
  ::SemanticLogger.default_level = config[:level]

  config[:formatter] ||= :color

  set :logging, true
  use ::Rack::CommonLogger, ::SemanticLogger["Access"]

  if defined?(::ActiveRecord::Base)
    # ActiveRecord Logger
    ::ActiveRecord::Base.logger = ::SemanticLogger["SQL"]
  end

  ::Sinatra::Base.before do
    ::SemanticLogger.default_level = config[:level]
    ::SemanticLogger.appenders.each { |a| ::SemanticLogger.remove_appender(a) }
    ::SemanticLogger.add_appender(file_name: config[:filename], formatter: config[:formatter])

    env["rack.errors"] = ::Sinatra::ErrorLogger.new
    env["rack.logger"] = ::SemanticLogger[self.class.name]
  end
end