模块化sinatra应用程序不记录异常

时间:2013-09-02 13:29:36

标签: exception logging sinatra

我正在Sinatra创建我的第一个应用程序,我遇到了日志记录问题。我在这里阅读了一些关于在Sinatra中登录的主题,并且感谢他们我可以记录请求但我在日志文件中看不到错误堆栈 - 它们只在控制台中显示。

这是我到目前为止所得到的:

app.rb

require 'rubygems'
require 'bundler'
Bundler.require(:default, ENV['RACK_ENV'].to_sym)

require 'sinatra/base'
require 'sinatra/config_file'
require 'sinatra/partial'

class App < Sinatra::Base
  configure do
    enable :sessions, :logging, :partial_underscores, :dump_errors, :raise_errors

    log_file = File.new("#{settings.root}/log/#{settings.environment}.log", 'a+')
    log_file.sync = true
    use Rack::CommonLogger, log_file

    set :root, File.dirname(__FILE__)
    set :logger_level, :info
    set :logger_log_file, File.join(File.dirname(__FILE__), "/log/#{environment}.log")

    helpers do
      def logger
        @logger ||= begin
          @logger = ::Logger.new(self.class.logger_log_file)
          @logger.level = ::Logger.const_get((self.class.logger_level || :warn).to_s.upcase)
          @logger.datetime_format = "%Y-%m-%d %H:%M:%S"
          @logger
        end
      end
    end
  end

  error do
    logger.error env['sinatra.error'].message
    redirect to('500.html')
  end
end

当我设置

get '/' do
  raise 'some test error'
end

堆栈跟踪仅在控制台中显示。我有什么想法吗?

0 个答案:

没有答案