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 +6 -0
- data/README.rdoc +1 -3
- data/lib/td/logger/agent/rails/config.rb +3 -1
- data/lib/td/logger/agent/rails/model.rb +1 -1
- data/lib/td/logger/agent/rails.rb +2 -2
- data/lib/td/logger/event.rb +2 -2
- data/lib/td/logger/td_logger.rb +21 -13
- data/lib/td/logger/version.rb +1 -1
- data/lib/td/logger.rb +12 -4
- metadata +9 -9
data/ChangeLog
CHANGED
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
|
-
|
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
|
@@ -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
|
data/lib/td/logger/event.rb
CHANGED
@@ -46,8 +46,8 @@ module Logger
|
|
46
46
|
|
47
47
|
attr_accessor :attribute
|
48
48
|
|
49
|
-
def post(action, record
|
50
|
-
TreasureData::Logger.post(action, @attribute.merge(record)
|
49
|
+
def post(action, record={})
|
50
|
+
TreasureData::Logger.post(action, @attribute.merge(record))
|
51
51
|
end
|
52
52
|
|
53
53
|
include Event
|
data/lib/td/logger/td_logger.rb
CHANGED
@@ -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
|
-
|
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
|
96
|
-
|
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
|
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
|
data/lib/td/logger/version.rb
CHANGED
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
|
22
|
-
@@logger.post(tag, record
|
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
|
45
|
-
TreasureData::Logger.post(tag, record
|
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.
|
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-
|
12
|
+
date: 2011-11-07 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: msgpack
|
16
|
-
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: *
|
24
|
+
version_requirements: *70341448070920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: td-client
|
27
|
-
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: *
|
35
|
+
version_requirements: *70341448070120
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: fluent-logger
|
38
|
-
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.
|
43
|
+
version: 0.4.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70341448069220
|
47
47
|
description:
|
48
48
|
email:
|
49
49
|
executables: []
|