1

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

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

应用程序.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

堆栈跟踪仅在控制台中显示。任何想法我做错了什么?

4

0 回答 0