使用Sinatra和Rack Logger过滤敏感信息

Srd*_*jic 3 ruby logging rack sinatra

我维护一个充当JSON API服务的Sinatra应用程序.该API由另一个Web应用程序以及移动应用程序使用.

我想做的是让Rack :: CommonLogger从其日志中排除敏感信息,如密码.Rails启用了此设置,但我没有找到有关如何在Sinatra中执行此操作的文档.

任何帮助,将不胜感激.

小智 5

您可以尝试拦截调用以编写和过滤掉敏感消息,如下所示:

logger = Logger.new("my_common.log")
logger.instance_eval do
  def write(msg)
    self.send(:<<, msg) if !msg.match /SUPER SENSITIVE INFO HERE/
  end
end
Run Code Online (Sandbox Code Playgroud)

然后,配置Rack :: CommonLogger以使用此记录器实例:

config.middleware.use Rack::CommonLogger, logger
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助