logfoo 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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