logfoo 0.0.15 → 0.1.0

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: b7598ba2df8e78ef3ee119a5d97a3cd0c98826db
4
- data.tar.gz: d7c3785a015a5b1c2922be6df4b35c3ecc4b5586
3
+ metadata.gz: 857999027a1fcc041e9d18a8e21a553c341e8fa5
4
+ data.tar.gz: 26405011efeb66f671e034123ec21919623b7f99
5
5
  SHA512:
6
- metadata.gz: e48012c7d9ec1ebad5199544508a747e45f625c9ae63b82cd3ad97fc9c6c465a991d6e7b1cc69169bb0fa755e3926f4c11a883b582019b137bf8928ce7d77ee0
7
- data.tar.gz: f27d853c96d28634a12c7d25938ad280c9414e6ef770128503b0e9312dc9ebcb98d5cadf682142b1542f03669376e43ae0207437bbb16574cf364e1e6b4a502d
6
+ metadata.gz: 0cd7eca7fad685d5867b8a0ecf9e6d91522c4f449f4cf714b0cb77c32d460337492527bdef3fe2a4ddd179c865948e9edaf5e721bdfa7b70cc6e8e897b985b04
7
+ data.tar.gz: 5ff3c3bee068a5d2cba43ef602f98fdc09c5b45e481bd434f8d9e54d4c045e97043b59c8ec784eeef19f6bc82522b914a7f931b6d3632ccf3d0b2dc914ba7a36
@@ -1,12 +1,13 @@
1
1
  module Logfoo
2
2
  class Context
3
3
 
4
- attr_reader :level, :scope, :thread_id
4
+ attr_reader :level, :name, :thread_id
5
5
 
6
- def initialize(app, scope, context = nil)
6
+ THREAD_CONTEXT = :"logfoo_context"
7
+
8
+ def initialize(app, name, context = nil)
7
9
  @app = app
8
- @scope = scope
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[thread_id] ||= []
31
- Thread.current[thread_id].push(keys)
31
+ Thread.current[THREAD_CONTEXT] ||= []
32
+ Thread.current[THREAD_CONTEXT].push(keys)
32
33
  yield
33
34
  ensure
34
- Thread.current[thread_id].pop
35
- if Thread.current[thread_id] == []
36
- Thread.current[thread_id] = nil
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[thread_id] || []).inject({}) do |memo, kvs|
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(@scope, message, payload, level: level_id)
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
- @scope,
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, :scope, :message, :payload, :thread) do
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
- scope: scope,
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, :scope, :exception, :payload, :thread) do
17
+ ExceptionEntry = Struct.new(:level, :time, :logger_name, :exception, :payload, :thread) do
18
18
  class << self
19
- def build(scope, ex, payload = nil, options = {})
19
+ def build(logger_name, ex, payload = nil, options = {})
20
20
  self.new(
21
21
  options[:level],
22
22
  Time.now,
23
- scope,
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: level || :error,
34
- time: time || Time.now,
35
- msg: exception.message,
36
- scope: scope,
37
- exception: exception.class.to_s,
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: thread,
42
- backtrace: exception.backtrace,
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 == :backtrace
39
- quote v.map{|i| i.to_s }.join(",")
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
@@ -1,3 +1,3 @@
1
1
  module Logfoo
2
- VERSION = '0.0.15'
2
+ VERSION = '0.1.0'
3
3
  end
data/lib/logfoo.rb CHANGED
@@ -12,8 +12,8 @@ module Logfoo
12
12
 
13
13
  extend self
14
14
 
15
- def get_logger(scope, context = nil)
16
- Context.new(App.instance, scope.to_s, context)
15
+ def get_logger(name, context = nil)
16
+ Context.new(App.instance, name.to_s, context)
17
17
  end
18
18
 
19
19
  def stop
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.15
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-17 00:00:00.000000000 Z
11
+ date: 2016-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler