我浏览了一些博客和网站,这些博客和网站给了我一些关于如何登录sinatra但是没有为我的应用程序工作的信息,我也经历了一个名为sinatra-logger的宝石没有尝试过,想要了解理想和简单在sinatra“登录”的方式。就像我们为rails。做logger.info一样。
我尝试过但没有工作的代码来自以下网站link,而且一些SO链接也指向上面链接中使用的相同方法。
configure do
LOGGER = Logger.new("sinatra.log")
end
helpers do
def logger
LOGGER
end
end
我已经在我的应用程序的app.rb中写了这个,它无法为App提供未定义的方法`configure':模块
任何指针或指南都会有所帮助。感谢。
编辑 现在我正在使用文件写入来记录我的错误和消息:
File.open('log.txt', 'a') do |f|
f.write "#{status}-#{CONFIG.api_url}-#{data.inspect}-tweet}"
end
答案 0 :(得分:18)
如果您使用的是Sinatra 1.3,您应该可以像使用logger.info
以下内容是从Sinatra Readme:
复制的在请求范围中,记录器助手公开Logger实例:
get '/' do
logger.info "loading data"
# ...
end
此记录器将自动考虑您的Rack处理程序的日志记录设置。如果禁用日志记录,此方法将返回一个虚拟对象,因此您不必担心路由和过滤器。
请注意,默认情况下只对Sinatra :: Application启用日志记录,因此如果您从Sinatra :: Base继承,您可能希望自己启用它:
class MyApp < Sinatra::Base
configure :production, :development do
enable :logging
end
end
要避免设置任何日志记录中间件,请将日志记录设置设置为nil。但是,请记住,在这种情况下,记录器将返回nil。一个常见的用例是您想要设置自己的记录器。 Sinatra将使用它在env ['rack.logger']中找到的任何内容。
Rack::CommonLogger在内部生成日志消息(我认为)。
答案 1 :(得分:2)
请在此处查看我的建议:Logging in Sinatra?
但是,从你的问题来看,问题就是App是一个模块。
你的Sinatra主要课程应该是这样的:
class App < Sinatra::Base
而不是
module App < Sinatra::Base
确保您已将其定义为一个类,并且该错误应该消失。