Launch this thingy 😅
This commit is contained in:
commit
a1191bfc15
|
@ -0,0 +1,14 @@
|
||||||
|
/.bundle/
|
||||||
|
/.yardoc
|
||||||
|
/Gemfile.lock
|
||||||
|
/_yardoc/
|
||||||
|
/coverage/
|
||||||
|
/doc/
|
||||||
|
/pkg/
|
||||||
|
/spec/reports/
|
||||||
|
/tmp/
|
||||||
|
*.bundle
|
||||||
|
*.so
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
mkmf.log
|
|
@ -0,0 +1,4 @@
|
||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
# Specify your gem's dependencies in grape-middleware-logger.gemspec
|
||||||
|
gemspec
|
|
@ -0,0 +1,22 @@
|
||||||
|
Copyright (c) 2015 Ryan Buckley
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Grape::Middleware::Logger
|
||||||
|
|
||||||
|
Dead until brought to life with the release of Grape v0.12.0
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Add this line to your application's Gemfile:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
gem 'grape-middleware-logger'
|
||||||
|
```
|
||||||
|
|
||||||
|
And then execute:
|
||||||
|
|
||||||
|
$ bundle
|
||||||
|
|
||||||
|
Or install it yourself as:
|
||||||
|
|
||||||
|
$ gem install grape-middleware-logger
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
class API < Grape::API
|
||||||
|
use Grape::Middleware::Logger
|
||||||
|
end
|
||||||
|
|
||||||
|
Using Grape with Rails? Add consistent logging and param filtering with
|
||||||
|
|
||||||
|
use Grape::Middleware::Logger, {
|
||||||
|
logger: Rails.logger,
|
||||||
|
filter: ActionDispatch::Http::ParameterFilter.new(Rails.application.config.filter_parameters)
|
||||||
|
}
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
Big thanks to jadent's question/answer on [stackoverflow](http://stackoverflow.com/questions/25048163/grape-using-error-and-grapemiddleware-after-callback)
|
||||||
|
for easily logging error responses. Borrowed some motivation from the [grape_logging](https://github.com/aserafin/grape_logging) gem
|
||||||
|
and would love to see these two consolidated at some point.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
1. Fork it ( https://github.com/ridiculous/grape-middleware-logger/fork )
|
||||||
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||||
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
||||||
|
4. Push to the branch (`git push origin my-new-feature`)
|
||||||
|
5. Create a new Pull Request
|
|
@ -0,0 +1,25 @@
|
||||||
|
# coding: utf-8
|
||||||
|
lib = File.expand_path('../lib', __FILE__)
|
||||||
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
||||||
|
require 'grape/middleware/logger/version'
|
||||||
|
|
||||||
|
Gem::Specification.new do |spec|
|
||||||
|
spec.name = "grape-middleware-logger"
|
||||||
|
spec.version = Grape::Middleware::Logger::VERSION
|
||||||
|
spec.authors = ["Ryan Buckley"]
|
||||||
|
spec.email = ["arebuckley@gmail.com"]
|
||||||
|
spec.summary = %q{Logging middleware for Grape apps}
|
||||||
|
spec.description = %q{Logging middleware for Grape apps, similar to what Rails offers}
|
||||||
|
spec.homepage = ""
|
||||||
|
spec.license = "MIT"
|
||||||
|
|
||||||
|
spec.files = `git ls-files -z`.split("\x0")
|
||||||
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
||||||
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
||||||
|
spec.require_paths = ["lib"]
|
||||||
|
|
||||||
|
spec.add_dependency 'grape'
|
||||||
|
|
||||||
|
spec.add_development_dependency "bundler", "~> 1.7"
|
||||||
|
spec.add_development_dependency "rake", "~> 10.0"
|
||||||
|
end
|
|
@ -0,0 +1,66 @@
|
||||||
|
require 'grape/middleware/logger/version'
|
||||||
|
require 'logger'
|
||||||
|
|
||||||
|
module Grape
|
||||||
|
module Middleware
|
||||||
|
class Logger < Grape::Middleware::Globals
|
||||||
|
|
||||||
|
#
|
||||||
|
# Overrides
|
||||||
|
#
|
||||||
|
|
||||||
|
def before
|
||||||
|
@start_time = Time.now
|
||||||
|
super
|
||||||
|
logger.info ''
|
||||||
|
logger.info %Q(Started #{env['grape.request'].request_method} "#{env['grape.request'].path}")
|
||||||
|
logger.info %Q( Parameters: #{parameters})
|
||||||
|
end
|
||||||
|
|
||||||
|
def after(status)
|
||||||
|
logger.info "Completed #{status} in #{((Time.now - @start_time) * 1000).round(2)}ms"
|
||||||
|
logger.info ''
|
||||||
|
end
|
||||||
|
|
||||||
|
def call!(env)
|
||||||
|
@env = env
|
||||||
|
before
|
||||||
|
error = catch(:error) { @app_response = @app.call(@env); nil }
|
||||||
|
if error
|
||||||
|
after_failure(error)
|
||||||
|
throw(:error, error)
|
||||||
|
else
|
||||||
|
after(@app_response.first)
|
||||||
|
end
|
||||||
|
@app_response
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Helpers
|
||||||
|
#
|
||||||
|
|
||||||
|
def after_failure(error)
|
||||||
|
logger.info %Q( Error: #{error[:message]}) if error[:message]
|
||||||
|
after(error[:status])
|
||||||
|
end
|
||||||
|
|
||||||
|
def parameters
|
||||||
|
request_params = env['grape.request.params'].to_hash
|
||||||
|
request_params.merge!(env['action_dispatch.request.request_parameters'] || {})
|
||||||
|
filter_params(request_params)
|
||||||
|
end
|
||||||
|
|
||||||
|
def filter_params(params)
|
||||||
|
if @options[:filter]
|
||||||
|
@options[:filter].filter(params)
|
||||||
|
else
|
||||||
|
params
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def logger
|
||||||
|
@logger ||= @options[:logger] || Logger.new(STDOUT)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
module Grape
|
||||||
|
module Middleware
|
||||||
|
class Logger
|
||||||
|
VERSION = '0.0.1'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue