Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 删除Sinatra应用程序中的默认路由日志记录_Ruby_Logging_Sinatra - Fatal编程技术网

Ruby 删除Sinatra应用程序中的默认路由日志记录

Ruby 删除Sinatra应用程序中的默认路由日志记录,ruby,logging,sinatra,Ruby,Logging,Sinatra,我有一个带有/health/api端点的Sintra应用程序,如下所述,它每秒被我的负载平衡器调用多次。我只想删除此路由的默认日志记录,或者相反,只将我关心的端点打印到日志中 get '/health/api' do # Health Check 'I keep quiet' end get '/members' do # get members data 'This request gets logged' end 您不能将默认的Rack::CommonLogger配置为仅

我有一个带有/health/api端点的Sintra应用程序,如下所述,它每秒被我的负载平衡器调用多次。我只想删除此路由的默认日志记录,或者相反,只将我关心的端点打印到日志中

get '/health/api' do
  # Health Check
  'I keep quiet'
end

get '/members' do
  # get members data
  'This request gets logged'
end

您不能将默认的Rack::CommonLogger配置为仅打印某些请求,而对其他请求保持安静。但您可以禁用默认的CommonLogger,并使用自己的过滤功能:

require 'rubygems'
require 'rack'
require 'sinatra'

LOGGING_BLACKLIST = ['/health/api']

class FilteredCommonLogger < Rack::CommonLogger
  def call(env)
    if filter_log(env)
      # default CommonLogger behaviour: log and move on
      super
    else
      # pass request to next component without logging
      @app.call(env)
    end
  end

  # return true if request should be logged
  def filter_log(env)
    !LOGGING_BLACKLIST.include?(env['PATH_INFO'])
  end
end

disable :logging
use FilteredCommonLogger

get '/members' do
  # get members data
  'This request gets logged'
end

get '/health/api' do
  # Health Check
  'I keep quiet'
end
需要“rubygems”
需要“机架”
需要“sinatra”
日志记录\u黑名单=['/health/api']
类FilteredCommonLogger

显然,您也可以编写只记录“白名单”请求的自定义记录器。

+1这是定制sinatra标准输出日志的完整解决方案。我做了
p t=env[“PATH\u INFO”]+??+env[“查询字符串”];如果t[/^\/log\?/]@app.call env;其他的超级的;结束
但不知何故我仍然看到:
naki PC---[17/Jul/2014:19:23:17╠“获取/记录?位置=2240 HTTP/1.1”200 2http://localhost:8719/ ->/log?position=2240”/log?position=2240“