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 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