chalk-log 0.1.2 → 0.1.3
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/.travis.yml +6 -0
- data/chalk-log.gemspec +1 -0
- data/lib/chalk-log/layout.rb +16 -9
- data/lib/chalk-log/version.rb +1 -1
- data/test/functional/formatting.rb +45 -4
- metadata +6 -9
- data/tddium.yml +0 -8
data/.travis.yml
ADDED
data/chalk-log.gemspec
CHANGED
|
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
|
|
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
18
18
|
gem.require_paths = ['lib']
|
|
19
|
+
gem.required_ruby_version = '>= 1.9.3'
|
|
19
20
|
gem.add_dependency 'chalk-config'
|
|
20
21
|
gem.add_dependency 'logging'
|
|
21
22
|
gem.add_dependency 'lspace'
|
data/lib/chalk-log/layout.rb
CHANGED
|
@@ -58,13 +58,12 @@ class Chalk::Log::Layout < ::Logging::Layout
|
|
|
58
58
|
raise Chalk::Log::InvalidArguments.new("Invalid leftover arguments: #{data.inspect}")
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
id = action_id
|
|
62
61
|
pid = Process.pid
|
|
63
62
|
|
|
64
63
|
pretty_print(
|
|
65
64
|
time: timestamp_prefix(time),
|
|
66
65
|
level: Chalk::Log::LEVELS[level],
|
|
67
|
-
|
|
66
|
+
span: span.to_s,
|
|
68
67
|
message: message,
|
|
69
68
|
error: error,
|
|
70
69
|
info: (info && info.merge(contextual_info || {})) || contextual_info,
|
|
@@ -74,7 +73,7 @@ class Chalk::Log::Layout < ::Logging::Layout
|
|
|
74
73
|
|
|
75
74
|
def pretty_print(spec)
|
|
76
75
|
message = build_message(spec[:message], spec[:info], spec[:error])
|
|
77
|
-
message = tag(message, spec[:time], spec[:pid], spec[:
|
|
76
|
+
message = tag(message, spec[:time], spec[:pid], spec[:span])
|
|
78
77
|
message
|
|
79
78
|
end
|
|
80
79
|
|
|
@@ -153,23 +152,31 @@ class Chalk::Log::Layout < ::Logging::Layout
|
|
|
153
152
|
dumped = JSON.generate(wrapped)
|
|
154
153
|
end
|
|
155
154
|
|
|
156
|
-
dumped[1...-1] # strip off the brackets we added while array-ifying
|
|
157
|
-
|
|
155
|
+
res = dumped[1...-1] # strip off the brackets we added while array-ifying
|
|
156
|
+
|
|
157
|
+
# Bug 6566 in ruby 2.0 (but not 2.1) allows generate() to return an invalid
|
|
158
|
+
# string when given invalid unicode input. Manually check for it.
|
|
159
|
+
unless res.valid_encoding?
|
|
160
|
+
raise ArgumentError.new("invalid byte sequence in UTF-8")
|
|
161
|
+
end
|
|
158
162
|
|
|
159
|
-
|
|
160
|
-
LSpace[:action_id]
|
|
163
|
+
res
|
|
161
164
|
end
|
|
162
165
|
|
|
163
166
|
def contextual_info
|
|
164
167
|
LSpace[:'chalk.log.contextual_info']
|
|
165
168
|
end
|
|
166
169
|
|
|
167
|
-
def
|
|
170
|
+
def span
|
|
171
|
+
LSpace[:span] || LSpace[:action_id]
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def tag(message, time, pid, span)
|
|
168
175
|
return message unless configatron.chalk.log.tagging
|
|
169
176
|
|
|
170
177
|
metadata = []
|
|
171
178
|
metadata << pid if configatron.chalk.log.pid
|
|
172
|
-
metadata <<
|
|
179
|
+
metadata << span if span.length > 0
|
|
173
180
|
prefix = "[#{metadata.join('|')}] " if metadata.length > 0
|
|
174
181
|
|
|
175
182
|
if configatron.chalk.log.timestamp
|
data/lib/chalk-log/version.rb
CHANGED
|
@@ -5,27 +5,40 @@ require 'chalk-log'
|
|
|
5
5
|
module Critic::Functional
|
|
6
6
|
class LogTest < Test
|
|
7
7
|
def enable_timestamp
|
|
8
|
-
configatron.
|
|
8
|
+
configatron.unlock! do
|
|
9
|
+
configatron.chalk.log.timestamp = true
|
|
10
|
+
end
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def disable_timestamp
|
|
12
|
-
configatron.
|
|
14
|
+
configatron.unlock! do
|
|
15
|
+
configatron.chalk.log.timestamp = false
|
|
16
|
+
end
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
def disable_pid
|
|
16
|
-
configatron.
|
|
20
|
+
configatron.unlock! do
|
|
21
|
+
configatron.chalk.log.pid = false
|
|
22
|
+
end
|
|
17
23
|
end
|
|
18
24
|
|
|
19
25
|
def disable_tagging
|
|
20
|
-
configatron.
|
|
26
|
+
configatron.unlock! do
|
|
27
|
+
configatron.chalk.log.tagging = false
|
|
28
|
+
end
|
|
21
29
|
end
|
|
22
30
|
|
|
23
31
|
before do
|
|
24
32
|
Chalk::Log.init
|
|
25
33
|
Process.stubs(:pid).returns(9973)
|
|
34
|
+
configatron.temp_start
|
|
26
35
|
disable_timestamp
|
|
27
36
|
end
|
|
28
37
|
|
|
38
|
+
after do
|
|
39
|
+
configatron.temp_end
|
|
40
|
+
end
|
|
41
|
+
|
|
29
42
|
class MyClass
|
|
30
43
|
include Chalk::Log
|
|
31
44
|
end
|
|
@@ -136,6 +149,34 @@ module Critic::Functional
|
|
|
136
149
|
end
|
|
137
150
|
end
|
|
138
151
|
|
|
152
|
+
it 'logs spans correctly' do
|
|
153
|
+
enable_timestamp
|
|
154
|
+
TestSpan = Struct.new(:action_id, :span_id, :parent_id) do
|
|
155
|
+
def to_s
|
|
156
|
+
sprintf("%s %s>%s",
|
|
157
|
+
action_id,
|
|
158
|
+
parent_id.to_s(16).rjust(16,'0'),
|
|
159
|
+
span_id.to_s(16).rjust(16,'0'))
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
LSpace.with(span: TestSpan.new("action", 0, 0)) do
|
|
163
|
+
rendered = layout(data: ["llamas"])
|
|
164
|
+
assert_equal('[1979-04-09 00:00:00.000000] [9973|action 0000000000000000>0000000000000000] llamas', rendered)
|
|
165
|
+
end
|
|
166
|
+
LSpace.with(span: TestSpan.new("action", 2, 0)) do
|
|
167
|
+
rendered = layout(data: ["llamas"])
|
|
168
|
+
assert_equal('[1979-04-09 00:00:00.000000] [9973|action 0000000000000000>0000000000000002] llamas', rendered)
|
|
169
|
+
end
|
|
170
|
+
LSpace.with(span: TestSpan.new("action", 0, 123)) do
|
|
171
|
+
rendered = layout(data: ["llamas"])
|
|
172
|
+
assert_equal('[1979-04-09 00:00:00.000000] [9973|action 000000000000007b>0000000000000000] llamas', rendered)
|
|
173
|
+
end
|
|
174
|
+
LSpace.with(span: TestSpan.new("action", 2, 123)) do
|
|
175
|
+
rendered = layout(data: ["llamas"])
|
|
176
|
+
assert_equal('[1979-04-09 00:00:00.000000] [9973|action 000000000000007b>0000000000000002] llamas', rendered)
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
139
180
|
describe 'faults' do
|
|
140
181
|
it 'shows an appropriate error if the invalid arguments are provided' do
|
|
141
182
|
rendered = layout(data: ['foo', nil])
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chalk-log
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2015-07-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: chalk-config
|
|
@@ -131,6 +131,7 @@ extensions: []
|
|
|
131
131
|
extra_rdoc_files: []
|
|
132
132
|
files:
|
|
133
133
|
- .gitignore
|
|
134
|
+
- .travis.yml
|
|
134
135
|
- Gemfile
|
|
135
136
|
- History.txt
|
|
136
137
|
- LICENSE.txt
|
|
@@ -144,7 +145,6 @@ files:
|
|
|
144
145
|
- lib/chalk-log/logger.rb
|
|
145
146
|
- lib/chalk-log/utils.rb
|
|
146
147
|
- lib/chalk-log/version.rb
|
|
147
|
-
- tddium.yml
|
|
148
148
|
- test/_lib.rb
|
|
149
149
|
- test/_lib/fake.rb
|
|
150
150
|
- test/_lib/fake/event.rb
|
|
@@ -164,10 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
164
164
|
requirements:
|
|
165
165
|
- - ! '>='
|
|
166
166
|
- !ruby/object:Gem::Version
|
|
167
|
-
version:
|
|
168
|
-
segments:
|
|
169
|
-
- 0
|
|
170
|
-
hash: -3360703599458620341
|
|
167
|
+
version: 1.9.3
|
|
171
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
169
|
none: false
|
|
173
170
|
requirements:
|
|
@@ -176,10 +173,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
176
173
|
version: '0'
|
|
177
174
|
segments:
|
|
178
175
|
- 0
|
|
179
|
-
hash:
|
|
176
|
+
hash: 3516609577492555280
|
|
180
177
|
requirements: []
|
|
181
178
|
rubyforge_project:
|
|
182
|
-
rubygems_version: 1.8.
|
|
179
|
+
rubygems_version: 1.8.23
|
|
183
180
|
signing_key:
|
|
184
181
|
specification_version: 3
|
|
185
182
|
summary: Chalk::Log makes any class loggable. It provides a logger that can be used
|