logfoo 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 99b9133634291a10985c788fc7b72295c4c2c5f7
4
- data.tar.gz: 441f75d9524ec2c761e210cd9aa813aa32207cb0
3
+ metadata.gz: 74b682ea6f7b1657485983cc982444b733838151
4
+ data.tar.gz: db10e9619bd2b5626639e7520740b1041aa303ad
5
5
  SHA512:
6
- metadata.gz: 70f9168d32bba533630acf666915a9f60cb7c8dedfbb22a6c4a3157d40702d96460ae069dc8b74af3ecca389c9e9ee7d1b2cafced86add7a5b4648bdf535b3b2
7
- data.tar.gz: 43752457c5b71c7e021d9f7a7395e833665e33c7b8ca7ed06f6bac9d2952bb74dcab1b17b610ab2a4141dc40d6861aa8be28a62cde2792e37f81c34b10150323
6
+ metadata.gz: 518be6ef866cee18ad8cba9ff3e309440c2566fc1385720a70fd471c9098d553d264c8a2cc9cbbb9bd35742a72a2be61170dbefc7aa085abc4f16fecd0f2972c
7
+ data.tar.gz: f83407ab50b79ed00fb42ae8856cbdde308f3e980aa491b65d78cd75c699473e696b9631a43809195923f13129748e5d65ad0104fad32dabf83f4c81e8f7aa65
@@ -0,0 +1,48 @@
1
+ require 'rack'
2
+
3
+ module Logfoo
4
+ class ErrMiddleware
5
+
6
+ def initialize(app, log = nil)
7
+ @log = log || Logfoo.get_logger('Rack')
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ @app.call(env)
13
+ rescue Exception => e
14
+ @log.error(e, clean_env(env))
15
+ body = dump_exception(e)
16
+ [
17
+ 500,
18
+ {
19
+ Rack::CONTENT_TYPE => 'text/plain',
20
+ Rack::CONTENT_LENGTH => Rack::Utils.bytesize(body).to_s,
21
+ },
22
+ [body],
23
+ ]
24
+ end
25
+
26
+ private
27
+
28
+ def clean_env(env)
29
+ env.inject({}) do |ac, pair|
30
+ case
31
+ when pair[0] =~ /\A(rack|puma)\./
32
+ ac
33
+ else
34
+ ac.merge! pair[0] => pair[1]
35
+ end
36
+ end
37
+ end
38
+
39
+ def dump_exception(exception)
40
+ string = "#{exception.class}: #{exception.message}\n"
41
+ string << exception.backtrace.map { |l| "\t#{l}" }.join("\n")
42
+ string
43
+ end
44
+
45
+ end
46
+ end
47
+
48
+
@@ -0,0 +1,13 @@
1
+ module Logfoo
2
+ class HutchErrorHandler
3
+ def handle(message_id, payload, consumer, ex)
4
+ Logfoo::App.handle_exception(
5
+ ex,
6
+ "Hutch",
7
+ payload: payload,
8
+ consumer: consumer,
9
+ message_id: message_id
10
+ )
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,47 @@
1
+ require 'rack'
2
+
3
+ module Logfoo
4
+
5
+ class LogMiddleware
6
+ FORMAT = %{%s "%s %s%s %s" %d %s %0.4f}
7
+
8
+ def initialize(app, log = nil)
9
+ @log = log || Logfoo.get_logger('Rack')
10
+ @app = app
11
+ end
12
+
13
+ def call(env)
14
+ began_at = Time.now
15
+ status, header, body = @app.call(env)
16
+ header = Rack::Utils::HeaderHash.new(header)
17
+ body = Rack::BodyProxy.new(body) { log(env, status, header, began_at) }
18
+ [status, header, body]
19
+ end
20
+
21
+ private
22
+
23
+ def log(env, status, header, began_at)
24
+ now = Time.now
25
+ length = extract_content_length(header)
26
+ peer = env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"]
27
+
28
+ payload = {
29
+ method: env[Rack::REQUEST_METHOD],
30
+ path: env[Rack::PATH_INFO],
31
+ query: env[Rack::QUERY_STRING],
32
+ status: status.to_s[0..3],
33
+ len: length,
34
+ peer: peer,
35
+ duration: now - began_at
36
+ }
37
+
38
+ @log.info "request", payload
39
+ end
40
+
41
+ def extract_content_length(headers)
42
+ headers[Rack::CONTENT_LENGTH] || 0
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -1,3 +1,3 @@
1
1
  module Logfoo
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
data/lib/logfoo.rb CHANGED
@@ -38,6 +38,9 @@ end
38
38
  exception_handlers/stderr_exception_handler
39
39
  app
40
40
  context
41
+ middlewares/err_middleware
42
+ middlewares/log_middleware
43
+ middlewares/hutch_error_handler
41
44
  }.each do |f|
42
45
  require File.expand_path("../logfoo/#{f}", __FILE__)
43
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logfoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Galinsky
@@ -89,6 +89,9 @@ files:
89
89
  - lib/logfoo/exception_handlers/stderr_exception_handler.rb
90
90
  - lib/logfoo/formatters/logfmt_formatter.rb
91
91
  - lib/logfoo/formatters/simple_formatter.rb
92
+ - lib/logfoo/middlewares/err_middleware.rb
93
+ - lib/logfoo/middlewares/hutch_error_handler.rb
94
+ - lib/logfoo/middlewares/log_middleware.rb
92
95
  - lib/logfoo/version.rb
93
96
  - logfoo.gemspec
94
97
  homepage: https://github.com/dmexe/logfoo