twiglet 2.4.0 → 3.0.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -1
- data/.rubocop.yml +1 -1
- data/Gemfile +1 -1
- data/example_app.rb +25 -25
- data/lib/hash_extensions.rb +3 -3
- data/lib/twiglet/version.rb +1 -1
- data/test/logger_test.rb +28 -28
- data/twiglet.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a3d278f5c152781abb779db8f28f7297f52c4d76db5358a78f13e784475f4851
|
|
4
|
+
data.tar.gz: bd8e3ae4b640ade3cb57489216cbdc7aec383f5535946c328352cc350057474c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ef689b0df5314da2ddb0e5ed95a724d25f0f5c93f2f9647478d7f9eb60acb60b7b712c731b4118087d28f32685cc91bdb032f73e7438a822ad8fc7be7e742dd4
|
|
7
|
+
data.tar.gz: 2bc88df6d4f6a7cd4c0304eeafa199384054c58cc6f39629daec456605c72397302a49380f8bf681645654b030bc59b7d458ac45ca42091558711ea9980b6580
|
data/.github/workflows/ruby.yml
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/example_app.rb
CHANGED
|
@@ -8,27 +8,27 @@ logger = Twiglet::Logger.new('petshop')
|
|
|
8
8
|
|
|
9
9
|
# Start our petshop
|
|
10
10
|
logger.info({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
event: {
|
|
12
|
+
action: 'startup'
|
|
13
|
+
},
|
|
14
|
+
message: "Ready to go, listening on port #{PORT}",
|
|
15
|
+
server: {
|
|
16
|
+
port: PORT
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
19
|
|
|
20
20
|
# Use text logging
|
|
21
21
|
logger.info("Ready to go, listening on port #{PORT}")
|
|
22
22
|
#
|
|
23
23
|
# We get a request
|
|
24
24
|
request_logger = logger.with({
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
event: {
|
|
26
|
+
action: 'HTTP request'
|
|
27
|
+
},
|
|
28
|
+
trace: {
|
|
29
|
+
id: '126bb6fa-28a2-470f-b013-eefbf9182b2d'
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
32
|
|
|
33
33
|
# Oh noes!
|
|
34
34
|
db_err = StandardError.new('Connection timed-out')
|
|
@@ -37,16 +37,16 @@ request_logger.error({ message: 'DB connection failed.' }, db_err) if db_err
|
|
|
37
37
|
|
|
38
38
|
# We return an error to the requester
|
|
39
39
|
request_logger.info({
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
message: 'Internal Server Error',
|
|
41
|
+
http: {
|
|
42
|
+
request: {
|
|
43
|
+
method: 'get'
|
|
44
|
+
},
|
|
45
|
+
response: {
|
|
46
|
+
status_code: 500
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
50
|
|
|
51
51
|
# Logging with an empty message is an anti-pattern and is therefore forbidden
|
|
52
52
|
# Both of the following lines would throw an error
|
data/lib/hash_extensions.rb
CHANGED
|
@@ -22,8 +22,8 @@ module HashExtensions
|
|
|
22
22
|
|
|
23
23
|
def build_nested_object(key, val)
|
|
24
24
|
key.to_s
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
.split('.')
|
|
26
|
+
.reverse
|
|
27
|
+
.reduce(val) { |nested, key_part| Hash[key_part.to_sym, nested] }
|
|
28
28
|
end
|
|
29
29
|
end
|
data/lib/twiglet/version.rb
CHANGED
data/test/logger_test.rb
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
require 'minitest/autorun'
|
|
4
4
|
require_relative '../lib/twiglet/logger'
|
|
5
5
|
|
|
6
|
+
LEVELS = [
|
|
7
|
+
{ method: :debug, level: 'debug' },
|
|
8
|
+
{ method: :info, level: 'info' },
|
|
9
|
+
{ method: :warning, level: 'warn' },
|
|
10
|
+
{ method: :warn, level: 'warn' },
|
|
11
|
+
{ method: :critical, level: 'fatal' },
|
|
12
|
+
{ method: :fatal, level: 'fatal' },
|
|
13
|
+
{ method: :error, level: 'error' }
|
|
14
|
+
].freeze
|
|
15
|
+
|
|
6
16
|
# rubocop:disable Metrics/BlockLength
|
|
7
17
|
describe Twiglet::Logger do
|
|
8
18
|
before do
|
|
@@ -13,16 +23,6 @@ describe Twiglet::Logger do
|
|
|
13
23
|
output: @buffer)
|
|
14
24
|
end
|
|
15
25
|
|
|
16
|
-
LEVELS = [
|
|
17
|
-
{ method: :debug, level: 'debug' },
|
|
18
|
-
{ method: :info, level: 'info' },
|
|
19
|
-
{ method: :warning, level: 'warn' },
|
|
20
|
-
{ method: :warn, level: 'warn' },
|
|
21
|
-
{ method: :critical, level: 'fatal' },
|
|
22
|
-
{ method: :fatal, level: 'fatal' },
|
|
23
|
-
{ method: :error, level: 'error' }
|
|
24
|
-
].freeze
|
|
25
|
-
|
|
26
26
|
it 'should throw an error with an empty service name' do
|
|
27
27
|
assert_raises RuntimeError do
|
|
28
28
|
Twiglet::Logger.new(' ')
|
|
@@ -105,16 +105,16 @@ describe Twiglet::Logger do
|
|
|
105
105
|
it "should be able to add properties with '.with'" do
|
|
106
106
|
# Let's add some context to this customer journey
|
|
107
107
|
purchase_logger = @logger.with({
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
trace: {id: '1c8a5fb2-fecd-44d8-92a4-449eb2ce4dcb'},
|
|
109
|
+
customer: {full_name: 'Freda Bloggs'},
|
|
110
|
+
event: {action: 'pet purchase'}
|
|
111
|
+
})
|
|
112
112
|
|
|
113
113
|
# do stuff
|
|
114
114
|
purchase_logger.info({
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
message: 'customer bought a dog',
|
|
116
|
+
pet: {name: 'Barker', species: 'dog', breed: 'Bitsa'}
|
|
117
|
+
})
|
|
118
118
|
|
|
119
119
|
log = read_json @buffer
|
|
120
120
|
|
|
@@ -285,12 +285,12 @@ describe Twiglet::Logger do
|
|
|
285
285
|
describe 'dotted keys' do
|
|
286
286
|
it 'should be able to convert dotted keys to nested objects' do
|
|
287
287
|
@logger.debug({
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
288
|
+
"trace.id": '1c8a5fb2-fecd-44d8-92a4-449eb2ce4dcb',
|
|
289
|
+
message: 'customer bought a dog',
|
|
290
|
+
"pet.name": 'Barker',
|
|
291
|
+
"pet.species": 'dog',
|
|
292
|
+
"pet.breed": 'Bitsa'
|
|
293
|
+
})
|
|
294
294
|
log = read_json(@buffer)
|
|
295
295
|
|
|
296
296
|
assert_equal '1c8a5fb2-fecd-44d8-92a4-449eb2ce4dcb', log[:trace][:id]
|
|
@@ -302,11 +302,11 @@ describe Twiglet::Logger do
|
|
|
302
302
|
|
|
303
303
|
it 'should be able to mix dotted keys and nested objects' do
|
|
304
304
|
@logger.debug({
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
305
|
+
"trace.id": '1c8a5fb2-fecd-44d8-92a4-449eb2ce4dcb',
|
|
306
|
+
message: 'customer bought a dog',
|
|
307
|
+
pet: {name: 'Barker', breed: 'Bitsa'},
|
|
308
|
+
"pet.species": 'dog'
|
|
309
|
+
})
|
|
310
310
|
log = read_json(@buffer)
|
|
311
311
|
|
|
312
312
|
assert_equal '1c8a5fb2-fecd-44d8-92a4-449eb2ce4dcb', log[:trace][:id]
|
data/twiglet.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: twiglet
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Simply Business
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-12-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Like a log, only smaller.
|
|
14
14
|
email:
|
|
@@ -59,14 +59,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
59
59
|
requirements:
|
|
60
60
|
- - ">="
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: '2.
|
|
62
|
+
version: '2.6'
|
|
63
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - ">="
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
67
|
version: '0'
|
|
68
68
|
requirements: []
|
|
69
|
-
rubygems_version: 3.
|
|
69
|
+
rubygems_version: 3.1.4
|
|
70
70
|
signing_key:
|
|
71
71
|
specification_version: 4
|
|
72
72
|
summary: Twiglet
|