log_box 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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