Exception 模块化sinatra应用程序不';t日志异常

Exception 模块化sinatra应用程序不';t日志异常,exception,logging,sinatra,Exception,Logging,Sinatra,我正在Sinatra创建我的第一个应用程序,我在日志记录方面遇到了问题。我在这里读了一些关于登录Sinatra的主题,由于它们,我可以记录请求,但在我的日志文件中看不到错误堆栈-它们只显示在控制台中 以下是我到目前为止得到的信息: app.rb require 'rubygems' require 'bundler' Bundler.require(:default, ENV['RACK_ENV'].to_sym) require 'sinatra/base' require '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

堆栈跟踪仅在控制台中显示。你知道我做错了什么吗?

你有没有在没有定义助手的情况下尝试过?是的,你说得对,我不需要帮助记录器工作,所以我把它移除了。但它仍然没有在我的日志文件中显示异常。我唯一得到的是
127.0.0.1---[03/Sep/2013 14:34:29]“get/\uuu sinatra\uuuu/500.png HTTP/1.1”304-0.0014
而不是你那里的文件设置(
log\u file=file.new
..)试试标准库的设置怎么样?e、 g.
logger=logger.new(“path/to/logfile”);logger.level=记录器::错误;使用Rack::Commonlogger,logger
,不幸的是,它根本没有帮助。当我切换到记录器时,我的日志停止工作。我的测试显示:
NoMethodError:undefined方法
write'for#
。当我添加
class::Logger时;alias_方法:write,:我发现这似乎是问题的根源。它有一些解决办法的建议。
get '/' do
  raise 'some test error'
end