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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74b682ea6f7b1657485983cc982444b733838151
|
4
|
+
data.tar.gz: db10e9619bd2b5626639e7520740b1041aa303ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,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
|
+
|
data/lib/logfoo/version.rb
CHANGED
data/lib/logfoo.rb
CHANGED
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.
|
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
|