td-logger 0.3.0 → 0.3.1

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