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