logfoo 0.0.9 → 0.0.10
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/app.rb +7 -5
- data/lib/logfoo/appenders/io_appender.rb +5 -0
- data/lib/logfoo/context.rb +1 -1
- data/lib/logfoo/entry.rb +3 -2
- data/lib/logfoo/exception_handlers/stderr_exception_handler.rb +1 -13
- data/lib/logfoo/formatters/logfmt_formatter.rb +7 -3
- data/lib/logfoo/formatters/simple_formatter.rb +23 -1
- data/lib/logfoo/mixin.rb +16 -0
- data/lib/logfoo/version.rb +1 -1
- data/lib/logfoo.rb +5 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f635ccd0588d2b30983b1dcf0c5037d62da8239
|
4
|
+
data.tar.gz: d44dcf8fe0b1c0128f987836c10595c206c6b0d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42cc09fff3d3eeb0d1f354da3311c3a31d2fbb6f9a80a778aec2b94aefec3ffd8a6bddf5364636f3ab60790b78062be5590f811c2da65f35e8bc19a00c8f5bf1
|
7
|
+
data.tar.gz: c4b91ae535f8df589a8fb461bee61ab30578e3aa07094dd23150af208edf2920422ee25d9eb316c8c345c7382312b94dfc15b25a830f690155b5bbc176e7a786
|
data/lib/logfoo/app.rb
CHANGED
@@ -46,14 +46,16 @@ module Logfoo
|
|
46
46
|
begin
|
47
47
|
loop do
|
48
48
|
entry = @queue.pop
|
49
|
-
|
49
|
+
case entry
|
50
|
+
when :shutdown
|
50
51
|
break
|
51
|
-
|
52
|
-
if entry == :boom
|
52
|
+
when :boom
|
53
53
|
raise IGNORE_ME_ERROR
|
54
|
+
when ExceptionEntry
|
55
|
+
App._handle_exception(entry)
|
56
|
+
else
|
57
|
+
App._append(entry)
|
54
58
|
end
|
55
|
-
App._append(entry)
|
56
|
-
App._handle_exception(entry) if entry.is_a?(ExceptionEntry)
|
57
59
|
end
|
58
60
|
rescue Exception => ex
|
59
61
|
entry = ExceptionEntry.build(self.class, ex)
|
@@ -2,6 +2,11 @@ module Logfoo
|
|
2
2
|
class IoAppender
|
3
3
|
def initialize(io = nil, formatter = nil)
|
4
4
|
@io = io || STDOUT
|
5
|
+
|
6
|
+
if @io.respond_to?(:sync=)
|
7
|
+
@io.sync = true
|
8
|
+
end
|
9
|
+
|
5
10
|
is_tty = @io.respond_to?(:tty?) && @io.tty?
|
6
11
|
@formatter = formatter || (is_tty ? SimpleFormatter.new : LogfmtFormatter.new)
|
7
12
|
end
|
data/lib/logfoo/context.rb
CHANGED
data/lib/logfoo/entry.rb
CHANGED
@@ -34,11 +34,12 @@ module Logfoo
|
|
34
34
|
time: time || Time.now,
|
35
35
|
msg: exception.message,
|
36
36
|
scope: scope,
|
37
|
-
|
37
|
+
exception: exception.class.to_s,
|
38
38
|
}.merge!(
|
39
39
|
payload || {}
|
40
40
|
).merge!(
|
41
|
-
thread:
|
41
|
+
thread: thread,
|
42
|
+
backtrace: exception.backtrace,
|
42
43
|
)
|
43
44
|
end
|
44
45
|
end
|
@@ -1,24 +1,12 @@
|
|
1
1
|
module Logfoo
|
2
2
|
|
3
3
|
class StderrExceptionHanlder
|
4
|
-
BACKTRACE_LINE = "\t%s\n".freeze
|
5
|
-
EXCEPTION_LINE = "%s: %s\n".freeze
|
6
|
-
|
7
4
|
def initialize(appender = nil)
|
8
5
|
@appender = appender || IoAppender.new(STDERR)
|
9
6
|
end
|
10
7
|
|
11
8
|
def call(entry)
|
12
|
-
@appender.
|
13
|
-
end
|
14
|
-
|
15
|
-
def format(entry)
|
16
|
-
values = []
|
17
|
-
values << (EXCEPTION_LINE % [entry.exception.class, entry.exception.message])
|
18
|
-
if entry.exception.backtrace.is_a?(Array)
|
19
|
-
values << entry.exception.backtrace.map{|l| BACKTRACE_LINE % l }.join
|
20
|
-
end
|
21
|
-
values.join
|
9
|
+
@appender.call entry
|
22
10
|
end
|
23
11
|
end
|
24
12
|
|
@@ -25,17 +25,21 @@ module Logfoo
|
|
25
25
|
def format_hash(attrs)
|
26
26
|
attrs.inject([]) do |ac, (k,v)|
|
27
27
|
if !IGNORED_KEYS.include?(k) && !(v == nil || v == "")
|
28
|
-
new_value = sanitize(v)
|
28
|
+
new_value = sanitize(k, v)
|
29
29
|
ac << "#{k}=#{new_value}"
|
30
30
|
end
|
31
31
|
ac
|
32
32
|
end.join(" ")
|
33
33
|
end
|
34
34
|
|
35
|
-
def sanitize(v)
|
35
|
+
def sanitize(k, v)
|
36
36
|
case v
|
37
37
|
when ::Array
|
38
|
-
|
38
|
+
if k == :backtrace
|
39
|
+
"[" + v.map{|i| may_quote i.to_s}.join(",") + "]"
|
40
|
+
else
|
41
|
+
may_quote v.map{|i| i.to_s }.join(",")
|
42
|
+
end
|
39
43
|
when ::Integer, ::Symbol
|
40
44
|
v.to_s
|
41
45
|
when ::Float
|
@@ -1,10 +1,32 @@
|
|
1
1
|
module Logfoo
|
2
2
|
class SimpleFormatter < LogfmtFormatter
|
3
3
|
|
4
|
-
FORMAT
|
4
|
+
FORMAT = "[%5s]: %s -%s%s".freeze
|
5
|
+
BACKTRACE_LINE = "\t%s\n".freeze
|
6
|
+
EXCEPTION_LINE = "%s: %s\n".freeze
|
5
7
|
|
6
8
|
private
|
7
9
|
|
10
|
+
def format_entry(entry)
|
11
|
+
attrs = entry.to_h
|
12
|
+
attrs.delete(:backtrace)
|
13
|
+
str = []
|
14
|
+
str << "#{format_hash(entry.to_h)}\n"
|
15
|
+
if entry.is_a?(ExceptionEntry)
|
16
|
+
str << format_exception(entry)
|
17
|
+
end
|
18
|
+
str.join("")
|
19
|
+
end
|
20
|
+
|
21
|
+
def format_exception(entry)
|
22
|
+
values = []
|
23
|
+
values << (EXCEPTION_LINE % [entry.exception.class, entry.exception.message])
|
24
|
+
if entry.exception.backtrace.is_a?(Array)
|
25
|
+
values << entry.exception.backtrace.map{|l| BACKTRACE_LINE % l }.join
|
26
|
+
end
|
27
|
+
values.join
|
28
|
+
end
|
29
|
+
|
8
30
|
def format_hash(attrs)
|
9
31
|
level = attrs.delete(:level)
|
10
32
|
message = attrs.delete(:msg)
|
data/lib/logfoo/mixin.rb
ADDED
data/lib/logfoo/version.rb
CHANGED
data/lib/logfoo.rb
CHANGED
@@ -19,6 +19,10 @@ module Logfoo
|
|
19
19
|
def stop
|
20
20
|
App.instance.stop
|
21
21
|
end
|
22
|
+
|
23
|
+
def mixin(name: nil)
|
24
|
+
Logfoo::Mixin
|
25
|
+
end
|
22
26
|
end
|
23
27
|
|
24
28
|
%w{
|
@@ -29,6 +33,7 @@ end
|
|
29
33
|
exception_handlers/stderr_exception_handler
|
30
34
|
app
|
31
35
|
context
|
36
|
+
mixin
|
32
37
|
}.each do |f|
|
33
38
|
require File.expand_path("../logfoo/#{f}", __FILE__)
|
34
39
|
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.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Galinsky
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- lib/logfoo/integrations/rack.rb
|
108
108
|
- lib/logfoo/integrations/rack/err.rb
|
109
109
|
- lib/logfoo/integrations/rack/log.rb
|
110
|
+
- lib/logfoo/mixin.rb
|
110
111
|
- lib/logfoo/version.rb
|
111
112
|
- logfoo.gemspec
|
112
113
|
homepage: https://github.com/dmexe/logfoo
|