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 +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: []
|