td-logger 0.3.0 → 0.3.1

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.
data/ChangeLog CHANGED
@@ -1,4 +1,10 @@
1
1
 
2
+ == 2011-11-07 version 0.3.1
3
+
4
+ * Added "debug_mode: true" option in config/treasure_data.yml
5
+ * Updated fluent-logger to v0.4.1
6
+
7
+
2
8
  == 2011-11-05 version 0.3.0
3
9
 
4
10
  * Added new API: TD.event
data/README.rdoc CHANGED
@@ -17,14 +17,12 @@ And then add +config/treasure_data.yml+ file as following:
17
17
  development:
18
18
  apikey: "YOUR_API_KEY"
19
19
  database: myapp
20
- access_log_table: access
21
- auto_create_table: true
20
+ debug_mode: true # enable debug mode
22
21
 
23
22
  # logging via td-agent (fluent)
24
23
  production:
25
24
  agent: "localhost:24224"
26
25
  tag: td.myapp
27
- access_log_table: access
28
26
 
29
27
  # disable logging
30
28
  test:
@@ -26,6 +26,8 @@ module Agent::Rails
26
26
  else
27
27
  @auto_create_table = true
28
28
  end
29
+
30
+ @debug_mode = !!conf['debug_mode']
29
31
  end
30
32
 
31
33
  @access_log_table = conf['access_log_table']
@@ -33,7 +35,7 @@ module Agent::Rails
33
35
 
34
36
  attr_reader :agent_host, :agent_port, :tag
35
37
  attr_reader :apikey, :database, :auto_create_table
36
- attr_reader :access_log_table
38
+ attr_reader :access_log_table, :debug_mode
37
39
 
38
40
  def agent_mode?
39
41
  @agent_host != nil
@@ -86,7 +86,7 @@ module Agent::Rails
86
86
  else
87
87
  time = Time.now
88
88
  end
89
- TreasureData::Logger.post(tag, data, time)
89
+ TreasureData::Logger.post_with_time(tag, data, time)
90
90
  end
91
91
  end
92
92
  end
@@ -17,9 +17,9 @@ module Agent::Rails
17
17
  end
18
18
 
19
19
  if c.agent_mode?
20
- ::TreasureData::Logger.open_agent(c.tag, :host=>c.agent_host, :port=>c.agent_port)
20
+ ::TreasureData::Logger.open_agent(c.tag, :host=>c.agent_host, :port=>c.agent_port, :debug=>c.debug_mode)
21
21
  else
22
- ::TreasureData::Logger.open(c.database, :apikey=>c.apikey, :auto_create_table=>c.auto_create_table)
22
+ ::TreasureData::Logger.open(c.database, :apikey=>c.apikey, :auto_create_table=>c.auto_create_table, :debug=>c.debug_mode)
23
23
  end
24
24
 
25
25
  rails.middleware.use Agent::Rack::Hook
@@ -46,8 +46,8 @@ module Logger
46
46
 
47
47
  attr_accessor :attribute
48
48
 
49
- def post(action, record, time=nil)
50
- TreasureData::Logger.post(action, @attribute.merge(record), time)
49
+ def post(action, record={})
50
+ TreasureData::Logger.post(action, @attribute.merge(record))
51
51
  end
52
52
 
53
53
  include Event
@@ -36,6 +36,8 @@ class TreasureDataLogger < Fluent::Logger::LoggerBase
36
36
  raise ArgumentError, ":apikey options is required"
37
37
  end
38
38
 
39
+ debug = !!options[:debug]
40
+
39
41
  require 'thread'
40
42
  require 'stringio'
41
43
  require 'zlib'
@@ -48,7 +50,11 @@ class TreasureDataLogger < Fluent::Logger::LoggerBase
48
50
  require 'td/client'
49
51
 
50
52
  @logger = ::Logger.new(STDERR)
51
- @logger.level = ::Logger::INFO
53
+ if debug
54
+ @logger.level = ::Logger::DEBUG
55
+ else
56
+ @logger.level = ::Logger::INFO
57
+ end
52
58
 
53
59
  @client = TreasureData::Client.new(apikey)
54
60
 
@@ -92,8 +98,9 @@ class TreasureDataLogger < Fluent::Logger::LoggerBase
92
98
  end
93
99
  end
94
100
 
95
- def post(tag, record, time=nil)
96
- time ||= Time.now
101
+ def post_with_time(tag, record, time)
102
+ @logger.debug { "event: #{tag} #{record.to_json}" rescue nil }
103
+
97
104
  record[:time] ||= time.to_i
98
105
 
99
106
  tag = "#{@tag_prefix}.#{tag}" if @tag_prefix
@@ -140,9 +147,17 @@ class TreasureDataLogger < Fluent::Logger::LoggerBase
140
147
  end
141
148
 
142
149
  private
150
+ def to_msgpack(msg)
151
+ begin
152
+ msg.to_msgpack
153
+ rescue NoMethodError
154
+ JSON.load(JSON.dump(msg)).to_msgpack
155
+ end
156
+ end
157
+
143
158
  def add(db, table, msg)
144
159
  begin
145
- data = msg.to_msgpack
160
+ data = to_msgpack(msg)
146
161
  rescue
147
162
  @logger.error("TreasureDataLogger: Can't convert to msgpack: #{msg.inspect}: #{$!}")
148
163
  return false
@@ -170,14 +185,6 @@ class TreasureDataLogger < Fluent::Logger::LoggerBase
170
185
  true
171
186
  end
172
187
 
173
- def to_msgpack(msg)
174
- begin
175
- msg.to_msgpack
176
- rescue NoMethodError
177
- JSON.load(JSON.dump(msg)).to_msgpack
178
- end
179
- end
180
-
181
188
  def try_flush
182
189
  @mutex.synchronize do
183
190
  if @queue.empty?
@@ -217,12 +224,13 @@ class TreasureDataLogger < Fluent::Logger::LoggerBase
217
224
  end
218
225
 
219
226
  def upload(db, table, buffer)
220
- @logger.debug "Uploading event logs to #{db}.#{table} table on Treasure Data"
221
227
  begin
222
228
  out = StringIO.new
223
229
  Zlib::GzipWriter.wrap(out) {|gz| gz.write buffer }
224
230
  stream = StringIO.new(out.string)
225
231
 
232
+ @logger.debug "Uploading event logs to #{db}.#{table} table on Treasure Data (#{stream.size} bytes)"
233
+
226
234
  @client.import(db, table, "msgpack.gz", stream, stream.size)
227
235
  rescue TreasureData::NotFoundError
228
236
  unless @auto_create_table
@@ -1,7 +1,7 @@
1
1
  module TreasureData
2
2
  module Logger
3
3
 
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
 
6
6
  end
7
7
  end
data/lib/td/logger.rb CHANGED
@@ -18,8 +18,12 @@ module Logger
18
18
  @@logger = Fluent::Logger::NullLogger.new
19
19
  end
20
20
 
21
- def self.post(tag, record, time=nil)
22
- @@logger.post(tag, record, time)
21
+ def self.post(tag, record={})
22
+ @@logger.post(tag, record)
23
+ end
24
+
25
+ def self.post_with_time(tag, record={}, time)
26
+ @@logger.post_with_time(tag, record, time)
23
27
  end
24
28
  end
25
29
  end
@@ -41,8 +45,12 @@ module TreasureData
41
45
  TreasureData::Logger.open_null
42
46
  end
43
47
 
44
- def self.post(tag, record, time=nil)
45
- TreasureData::Logger.post(tag, record, time)
48
+ def self.post(tag, record={})
49
+ TreasureData::Logger.post(tag, record)
50
+ end
51
+
52
+ def self.post_with_time(tag, record={}, time)
53
+ TreasureData::Logger.post_with_time(tag, record, time)
46
54
  end
47
55
 
48
56
  def self.event
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-04 00:00:00.000000000Z
12
+ date: 2011-11-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: msgpack
16
- requirement: &70213731736700 !ruby/object:Gem::Requirement
16
+ requirement: &70341448070920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.4.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70213731736700
24
+ version_requirements: *70341448070920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: td-client
27
- requirement: &70213731736040 !ruby/object:Gem::Requirement
27
+ requirement: &70341448070120 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,18 +32,18 @@ dependencies:
32
32
  version: 0.8.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70213731736040
35
+ version_requirements: *70341448070120
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fluent-logger
38
- requirement: &70213731735340 !ruby/object:Gem::Requirement
38
+ requirement: &70341448069220 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 0.4.0
43
+ version: 0.4.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70213731735340
46
+ version_requirements: *70341448069220
47
47
  description:
48
48
  email:
49
49
  executables: []