Kyl*_*Fox 53 ruby logging rack sinatra
我无法弄清楚如何使用Sinatra记录消息.我不打算记录请求,而是在我的应用程序中的某些点上自定义消息.例如,在获取我想要记录的URL时"Fetching #{url}".
这是我想要的:
logger.info("Fetching #{url}"))我猜这可以很容易地在做config.ru,但我不是100%肯定,我想启用该设置,如果我必须手动创建一个Logger对象本人(以及此外,该级Logger使用方法:Logger,Rack::Logger,或Rack::CommonLogger) .
(我知道在StackOverflow上有类似的问题,但似乎都没有直接回答我的问题.如果你能指出我现有的问题,我会把这个问题标记为副本).
Kon*_*ase 46
Sinatra 1.3将附带一个这样的记录器对象,完全可以像上面一样使用.您可以使用" 流出边缘 "中所述的边缘Sinatra .我想,在我们发布1.3之前不会那么久.
要与Sinatra 1.2一起使用,请执行以下操作:
require 'sinatra'
use Rack::Logger
helpers do
def logger
request.logger
end
end
Run Code Online (Sandbox Code Playgroud)
Phr*_*ogz 16
我个人通过以下方式登录Sinatra:
require 'sinatra'
require 'sequel'
require 'logger'
class MyApp < Sinatra::Application
configure :production do
set :haml, { :ugly=>true }
set :clean_trace, true
Dir.mkdir('logs') unless File.exist?('logs')
$logger = Logger.new('logs/common.log','weekly')
$logger.level = Logger::WARN
# Spit stdout and stderr to a file during production
# in case something goes wrong
$stdout.reopen("logs/output.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)
end
configure :development do
$logger = Logger.new(STDOUT)
end
end
# Log all DB commands that take more than 0.2s
DB = Sequel.postgres 'mydb', user:'dbuser', password:'dbpass', host:'localhost'
DB << "SET CLIENT_ENCODING TO 'UTF8';"
DB.loggers << $logger if $logger
DB.log_warn_duration = 0.2
Run Code Online (Sandbox Code Playgroud)
如果您正在使用像独角兽日志记录或其他中间件那样的IO流,那么您可以轻松地将记录器设置为STDOUT或STDERR
# unicorn.rb
stderr_path "#{app_root}/shared/log/unicorn.stderr.log"
stdout_path "#{app_root}/shared/log/unicorn.stdout.log"
# sinatra_app.rb
set :logger, Logger.new(STDOUT) # STDOUT & STDERR is captured by unicorn
logger.info('some info') # also accessible as App.settings.logger
Run Code Online (Sandbox Code Playgroud)
这允许您拦截应用程序范围内的消息,而不是仅仅作为请求帮助程序访问logger
| 归档时间: |
|
| 查看次数: |
52040 次 |
| 最近记录: |