log_box 0.0.2 → 0.0.3

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzcxMmU4NzhkYmJhM2U2OGU4NDZmZmYzMGY3M2I3NmJmOGI0NDc1Yw==
4
+ M2I1MGRjMzc1NThiOGZkMTc0MTgwYTRiYzdmOWU1NGQ3ZDllNmQzMw==
5
5
  data.tar.gz: !binary |-
6
- YTZmYTM4YzQzNWExZjdjMjY5OWY3OTA5OWM4ZDBiYmNlMjM1MjZiOQ==
6
+ YmY5ZTUyZjg4NTY0ZDcxM2UwM2M3YmUwM2QyZGNkNmI4OWEzNTNlZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWJmZmM0OGVmYzExMTcxNTFlODdkNmIyNThkY2IzZWEwNWY2NzY1OGUxYmQw
10
- MDI4YjZjM2JmOWRiY2JmZDc2ODczOGYyNDhiYjY2MTczNTM2NzYyMTAyMGU2
11
- ZjlkYjIwNGUxMDc1YTE3ZTQ0NGU3NTA1ZDFiYzRjMGIzODM4OTE=
9
+ N2YyZDZlZWE1ZmFjOTc2ZWJlZGEzMWM2MmY5MDczNGMwMjJiMTI2N2ZlMGE0
10
+ M2UwM2M5NTBkYjUzMWM1YTIyZjg3OWFhMGI2MzBmZjdiNDFkMWYyNmI0NjFl
11
+ MDYwZDllMGYwYTdjYmIyNGQ2ZDhkYTA4MjFkMmM3NjAxMGJhODc=
12
12
  data.tar.gz: !binary |-
13
- NzliY2E0NGQ5M2E4YWEwNDllNGYzOWE2YWNkN2E2OTM4MGJmMDlkZGExY2Jj
14
- ZWU4MTg3YzdlYjhmN2JiNGY2NGI2ZjEwNDRlMWQ4NjdmODE2MmJiNWI3NjRm
15
- NmM3MWRhOGEwMTBmMTFmZWNiYzYyOTVmNGJkMGRmNDIwMjc3MmI=
13
+ ZTVhNjY3YzcxZTVkMzRhZTkxZTNjNTYxOWVhNWIyZWFmYjJiOWYwMzU2ZTgw
14
+ NWY3Zjk4NDFkNmFjMjYxZTVjZDVkYWEzOGE4MjY5MmUxMTllMzY4ZmI2NzNi
15
+ OGMyN2RmOGQ1ZGY0YWM3NGYyZWUwMDkzYTIzOWYwOGE0Y2UyZTg=
@@ -2,36 +2,98 @@ require "log_box/version"
2
2
  require "fluent-logger"
3
3
  require "pp"
4
4
 
5
+ class Hash
6
+ def symbolize_keys
7
+ inject({}) do |options, (key, value)|
8
+ value = value.symbolize_keys if defined?(value.symbolize_keys)
9
+ options[(key.to_sym rescue key) || key] = value
10
+ options
11
+ end
12
+ end
13
+ end
14
+
5
15
  module LogBox
16
+ class << self
17
+ attr_accessor :configuration
18
+ end
19
+
20
+ def self.configure
21
+ self.configuration ||= Configuration.new
22
+ yield(configuration)
23
+ end
24
+
6
25
  DEFAULT_TAG = :thread
7
26
 
27
+ class Configuration
28
+ attr_accessor :logger, :default_tag
29
+
30
+ def initialize
31
+ @logger = Fluent::Logger::ConsoleLogger.new(STDOUT)
32
+ @default_tag = DEFAULT_TAG
33
+ end
34
+ end
35
+
36
+ # Following hash is stored into Thread.current[:_log_box]
37
+ # {
38
+ # :new_tag =>
39
+ # [{:time=>2014-01-01 15:38:15 -0800, :log=>"Hi-ho", :priority=>3}],
40
+ #
41
+ # :thread=>
42
+ # [{:time=>2014-01-01 15:38:21 -0800, :log=>"Hello"},
43
+ # {:time=>2014-01-01 15:38:23 -0800, :log=>"Hello2"}]
44
+ # }
8
45
  def self.log(obj, options = {})
9
- o = { tag: DEFAULT_TAG, time: current_time, log: obj }.merge(options)
46
+ return unless logger
47
+
48
+ o = { tag: default_tag,
49
+ time: current_time,
50
+ log: obj.is_a?(String) ? obj : obj.inspect
51
+ }.merge(options).symbolize_keys
52
+
53
+ =begin
54
+ o = { tag: default_tag, time: current_time }.merge(options).symbolize_keys
55
+ if obj.is_a?(String)
56
+ o[:log] = obj
57
+ elsif obj.class < ActiveRecord::Base
58
+ o = o.merge(class: obj.class.to_s).merge(obj.attributes)
59
+ elsif obj.is_a?(Hash)
60
+ o.merge!(obj)
61
+ else
62
+ o[:log] = obj.inspect
63
+ end
64
+ =end
10
65
  tag = o.delete :tag
11
66
  init_log_box_tag_if_not tag
12
67
  log_box[tag] << o
13
68
  end
14
69
 
15
-
16
- # Following log will be stored into fluentd:
70
+ # Following log is stored into fluentd:
17
71
  # {
18
72
  # "_id" : ObjectId("52c4a1f4e1eef37b9900001a"),
19
- # "tag" : "delayed_job",
73
+ # "tag" : "thread",
20
74
  # "logs" : [
21
75
  # {
22
76
  # "time" : "2014-01-01 15:16:43 -0800",
23
- # "log" : "Ho-ho",
24
- # "priority" : 3
77
+ # "log" : "Hi-ho",
25
78
  # }
26
79
  # ],
27
80
  # "time" : ISODate("2014-01-01T23:17:01.000Z")
28
81
  # }
29
82
  def self.flush(options = {})
30
- o = { tag: DEFAULT_TAG }.merge(options)
83
+ return unless logger
84
+
85
+ o = { tag: default_tag }.merge(options).symbolize_keys
31
86
  tag = o[:tag]
32
87
  o[:logs] = log_box[tag]
33
88
  flush_to_fluentd o
34
- delete_log_box_tag tag
89
+ discard tag
90
+ end
91
+
92
+ def self.discard(tag = nil)
93
+ return unless logger
94
+
95
+ tag ||= default_tag
96
+ log_box.delete tag
35
97
  end
36
98
 
37
99
  def self.display
@@ -42,8 +104,17 @@ module LogBox
42
104
  Thread.current[:_log_box]
43
105
  end
44
106
 
107
+
45
108
  private
46
109
 
110
+ def self.default_tag
111
+ self.configuration.default_tag || :thread
112
+ end
113
+
114
+ def self.logger
115
+ self.configuration.logger
116
+ end
117
+
47
118
  def self.current_time
48
119
  Time.now
49
120
  end
@@ -56,22 +127,18 @@ module LogBox
56
127
  init_log_box if log_box.nil?
57
128
  end
58
129
 
59
- def self.init_log_box_tag_if_not(tag = :thread)
130
+ def self.init_log_box_tag_if_not(tag = nil)
131
+ tag ||= default_tag
60
132
  init_log_box_if_not
61
133
  log_box[tag] ||= []
62
134
  end
63
135
 
64
- def self.delete_log_box_tag(tag = :thread)
65
- log_box.delete tag
66
- end
67
-
68
- def self.init_log_box_tag(tag = :thread)
136
+ def self.init_log_box_tag(tag = nil)
137
+ tag ||= default_tag
69
138
  log_box[tag] = []
70
139
  end
71
140
 
72
- Logger = Fluent::Logger::FluentLogger.new(nil)
73
-
74
141
  def self.flush_to_fluentd(result)
75
- Logger.post 'log_box', result
142
+ logger.post 'log_box', result if logger
76
143
  end
77
144
  end
@@ -1,3 +1,3 @@
1
1
  module LogBox
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -24,7 +24,13 @@ describe LogBox do
24
24
  let(:message_1_) { 'hello 1' }
25
25
  let(:message_2_) { 'hello 2' }
26
26
 
27
+ class DummyLogger
28
+ def initialize(); end
29
+ def post(tag, result); end
30
+ end
31
+
27
32
  before do
33
+ LogBox.configure do |config| config.logger = DummyLogger.new end
28
34
  LogBox.send(:init_log_box)
29
35
  LogBox.stub(:current_time).and_return(current_time_)
30
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_box
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jun Yoshida
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-01 00:00:00.000000000 Z
11
+ date: 2014-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  type: :development