logfoo 0.0.15 → 0.1.0
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 +4 -4
- data/lib/logfoo/context.rb +13 -12
- data/lib/logfoo/entry.rb +12 -12
- data/lib/logfoo/formatters/logfmt_formatter.rb +23 -4
- data/lib/logfoo/integrations/rack/err.rb +8 -0
- data/lib/logfoo/version.rb +1 -1
- data/lib/logfoo.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 857999027a1fcc041e9d18a8e21a553c341e8fa5
|
4
|
+
data.tar.gz: 26405011efeb66f671e034123ec21919623b7f99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cd7eca7fad685d5867b8a0ecf9e6d91522c4f449f4cf714b0cb77c32d460337492527bdef3fe2a4ddd179c865948e9edaf5e721bdfa7b70cc6e8e897b985b04
|
7
|
+
data.tar.gz: 5ff3c3bee068a5d2cba43ef602f98fdc09c5b45e481bd434f8d9e54d4c045e97043b59c8ec784eeef19f6bc82522b914a7f931b6d3632ccf3d0b2dc914ba7a36
|
data/lib/logfoo/context.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
module Logfoo
|
2
2
|
class Context
|
3
3
|
|
4
|
-
attr_reader :level, :
|
4
|
+
attr_reader :level, :name, :thread_id
|
5
5
|
|
6
|
-
|
6
|
+
THREAD_CONTEXT = :"logfoo_context"
|
7
|
+
|
8
|
+
def initialize(app, name, context = nil)
|
7
9
|
@app = app
|
8
|
-
@
|
9
|
-
@thread_id = :"logfoo_context_#{scope}"
|
10
|
+
@name = name
|
10
11
|
@level = Logfoo::DEBUG
|
11
12
|
@context = context || {}
|
12
13
|
end
|
@@ -27,17 +28,17 @@ module Logfoo
|
|
27
28
|
if block_given?
|
28
29
|
keys ||= {}
|
29
30
|
begin
|
30
|
-
Thread.current[
|
31
|
-
Thread.current[
|
31
|
+
Thread.current[THREAD_CONTEXT] ||= []
|
32
|
+
Thread.current[THREAD_CONTEXT].push(keys)
|
32
33
|
yield
|
33
34
|
ensure
|
34
|
-
Thread.current[
|
35
|
-
if Thread.current[
|
36
|
-
Thread.current[
|
35
|
+
Thread.current[THREAD_CONTEXT].pop
|
36
|
+
if Thread.current[THREAD_CONTEXT] == []
|
37
|
+
Thread.current[THREAD_CONTEXT] = nil
|
37
38
|
end
|
38
39
|
end
|
39
40
|
else
|
40
|
-
keys = (Thread.current[
|
41
|
+
keys = (Thread.current[THREAD_CONTEXT] || []).inject({}) do |memo, kvs|
|
41
42
|
kvs.each do |(k,v)|
|
42
43
|
memo.merge!(k => v)
|
43
44
|
end
|
@@ -73,12 +74,12 @@ module Logfoo
|
|
73
74
|
|
74
75
|
entry =
|
75
76
|
if message.is_a?(Exception)
|
76
|
-
ExceptionEntry.build(@
|
77
|
+
ExceptionEntry.build(@name, message, payload, level: level_id)
|
77
78
|
else
|
78
79
|
Entry.new(
|
79
80
|
level_id,
|
80
81
|
Time.now,
|
81
|
-
@
|
82
|
+
@name,
|
82
83
|
message,
|
83
84
|
payload,
|
84
85
|
Thread.current.object_id
|
data/lib/logfoo/entry.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Logfoo
|
2
|
-
Entry = Struct.new(:level, :time, :
|
2
|
+
Entry = Struct.new(:level, :time, :logger_name, :message, :payload, :thread) do
|
3
3
|
def to_h
|
4
4
|
{
|
5
5
|
level: level || :info,
|
6
6
|
time: time || Time.now,
|
7
7
|
msg: message,
|
8
|
-
|
8
|
+
logger: logger_name,
|
9
9
|
}.merge!(
|
10
10
|
payload || {}
|
11
11
|
).merge!(
|
@@ -14,13 +14,13 @@ module Logfoo
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
ExceptionEntry = Struct.new(:level, :time, :
|
17
|
+
ExceptionEntry = Struct.new(:level, :time, :logger_name, :exception, :payload, :thread) do
|
18
18
|
class << self
|
19
|
-
def build(
|
19
|
+
def build(logger_name, ex, payload = nil, options = {})
|
20
20
|
self.new(
|
21
21
|
options[:level],
|
22
22
|
Time.now,
|
23
|
-
|
23
|
+
logger_name,
|
24
24
|
ex,
|
25
25
|
payload,
|
26
26
|
Thread.current.object_id
|
@@ -30,16 +30,16 @@ module Logfoo
|
|
30
30
|
|
31
31
|
def to_h
|
32
32
|
{
|
33
|
-
level:
|
34
|
-
time:
|
35
|
-
msg:
|
36
|
-
|
37
|
-
|
33
|
+
level: level || :error,
|
34
|
+
time: time || Time.now,
|
35
|
+
msg: exception.message,
|
36
|
+
logger: logger_name,
|
37
|
+
err: exception.class.to_s,
|
38
38
|
}.merge!(
|
39
39
|
payload || {}
|
40
40
|
).merge!(
|
41
|
-
thread:
|
42
|
-
|
41
|
+
thread: thread,
|
42
|
+
stacktrace: exception.backtrace,
|
43
43
|
)
|
44
44
|
end
|
45
45
|
end
|
@@ -4,20 +4,25 @@ module Logfoo
|
|
4
4
|
class LogfmtFormatter
|
5
5
|
|
6
6
|
UNESCAPED_STRING = /\A[\w\.\-\+\%\,\:\;\/]*\z/i.freeze
|
7
|
+
STACKTRACE_RE = /^(.+?):(\d+):in `(.+)'$/.freeze
|
7
8
|
IGNORED_KEYS = [:time]
|
8
9
|
FLOAT_FORMAT = '%0.4f'.freeze
|
9
10
|
|
10
11
|
def call(entry)
|
11
12
|
case entry
|
12
13
|
when ExceptionEntry, Entry
|
13
|
-
format_entry(entry)
|
14
|
+
remove_nl format_entry(entry)
|
14
15
|
else
|
15
|
-
entry.to_s
|
16
|
+
remove_nl entry.to_s
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
19
20
|
private
|
20
21
|
|
22
|
+
def remove_nl(s)
|
23
|
+
s.tr("\n", ' ')
|
24
|
+
end
|
25
|
+
|
21
26
|
def format_entry(entry)
|
22
27
|
"#{format_hash(entry.to_h)}\n"
|
23
28
|
end
|
@@ -32,11 +37,25 @@ module Logfoo
|
|
32
37
|
end.join(" ")
|
33
38
|
end
|
34
39
|
|
40
|
+
def format_stacktrace(stack)
|
41
|
+
stack =
|
42
|
+
stack.inject([]) do |ac, line|
|
43
|
+
if line.match(STACKTRACE_RE)
|
44
|
+
ac.push [$1,$2,$3].join(":")
|
45
|
+
end
|
46
|
+
ac
|
47
|
+
end
|
48
|
+
if stack.any?
|
49
|
+
"\"#{stack.join(",")}\""
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
35
53
|
def sanitize(k, v)
|
36
54
|
case v
|
37
55
|
when ::Array
|
38
|
-
if k == :
|
39
|
-
|
56
|
+
if k == :stacktrace
|
57
|
+
format_stacktrace(v)
|
58
|
+
#quote v.map{|i| i.to_s }.join(",")
|
40
59
|
else
|
41
60
|
may_quote v.map{|i| i.to_s }.join(",")
|
42
61
|
end
|
@@ -37,10 +37,18 @@ module Logfoo::Rack
|
|
37
37
|
|
38
38
|
def append(e, env)
|
39
39
|
env = clean_env(env)
|
40
|
+
env = prefix_env(env)
|
40
41
|
entry = Logfoo::ExceptionEntry.build(LOGGER_NAME, e, env)
|
41
42
|
Logfoo::App.instance.append(entry)
|
42
43
|
end
|
43
44
|
|
45
|
+
def prefix_env(env)
|
46
|
+
env.inject({}) do |ac, (key, value)|
|
47
|
+
ac.merge!("env.#{key}" => value)
|
48
|
+
ac
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
44
52
|
def clean_env(env)
|
45
53
|
env.inject({}) do |ac, (key, value) |
|
46
54
|
case
|
data/lib/logfoo/version.rb
CHANGED
data/lib/logfoo.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logfoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Galinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|