sonnet 0.1.0 → 0.1.2
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/Gemfile.lock +1 -1
- data/lib/sonnet/formatter.rb +3 -9
- data/lib/sonnet/serializer.rb +13 -0
- data/lib/sonnet/sidekiq/exception_handler.rb +24 -0
- data/lib/sonnet/sidekiq/job_logger.rb +4 -4
- data/lib/sonnet/version.rb +1 -1
- data/test/sonnet_test.rb +20 -5
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37fe52c625a9e9652eb886216565a9ea485f3f309650881d3576690e979bd1ab
|
4
|
+
data.tar.gz: d50175a894ac543914f9547bf9ddd6b601863a6124fd8fec0c6545f5619634b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38d76037845898e166536ad70e5fc0fb9c6544462c5fe04a5c3bcadf1b48a2915b4a639ad543dbea16b9c8857b3c6c72bcf40d202f25be4c2194dacf77d99f77
|
7
|
+
data.tar.gz: 9378241dcd507f983cbe7ab2b5954780c3d2aafd676cde6aed02c3795e03af44ffc4ecd11110ae48571c2c7754c7b6b9a601c0799a8c7bc166467d13a5e791fd
|
data/Gemfile.lock
CHANGED
data/lib/sonnet/formatter.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "sonnet/serializer"
|
4
|
+
|
3
5
|
module Sonnet
|
4
6
|
class Formatter
|
5
7
|
TIMESTAMP_FORMAT = "%FT%T.%LZ"
|
@@ -26,7 +28,7 @@ module Sonnet
|
|
26
28
|
def data
|
27
29
|
case @data
|
28
30
|
when Exception
|
29
|
-
serialize_exception(@data)
|
31
|
+
Serializer.serialize_exception(@data)
|
30
32
|
when Hash
|
31
33
|
@data
|
32
34
|
else
|
@@ -42,14 +44,6 @@ module Sonnet
|
|
42
44
|
# @hostname || Socket.gethostname.force_encoding('UTF-8')
|
43
45
|
# end
|
44
46
|
|
45
|
-
def serialize_exception(exception)
|
46
|
-
{
|
47
|
-
kind: exception.class.name,
|
48
|
-
message: exception.to_s,
|
49
|
-
stack: exception.backtrace&.slice(0, 3)
|
50
|
-
}
|
51
|
-
end
|
52
|
-
|
53
47
|
def serialize_string(string)
|
54
48
|
{ message: string.to_s }
|
55
49
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq/exception_handler"
|
4
|
+
require "sonnet/serializer"
|
5
|
+
|
6
|
+
module Sonnet
|
7
|
+
module Sidekiq
|
8
|
+
module ExceptionHandler
|
9
|
+
def self.extended(base)
|
10
|
+
::Sidekiq::ExceptionHandler::Logger.prepend(Logger)
|
11
|
+
end
|
12
|
+
|
13
|
+
module Logger
|
14
|
+
def call(ex, ctxHash)
|
15
|
+
::Sidekiq.logger.warn(
|
16
|
+
exception: ex,
|
17
|
+
message: ctxHash["context"],
|
18
|
+
job: ctxHash[:job]
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -2,18 +2,18 @@
|
|
2
2
|
|
3
3
|
require "sidekiq/job_logger"
|
4
4
|
|
5
|
-
module
|
5
|
+
module Sonnet
|
6
6
|
module Sidekiq
|
7
7
|
class JobLogger < ::Sidekiq::JobLogger
|
8
8
|
def call(item, queue)
|
9
9
|
::Sidekiq::Logging.with_context(source: item['class']) do
|
10
10
|
begin
|
11
11
|
start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
12
|
-
logger.debug(:start)
|
12
|
+
logger.debug(message: "start")
|
13
13
|
yield
|
14
|
-
logger.debug(:done, duration: elapsed(start))
|
14
|
+
logger.debug(message: "done", duration: elapsed(start))
|
15
15
|
rescue
|
16
|
-
logger.debug(:failure, duration: elapsed(start))
|
16
|
+
logger.debug(message: "failure", duration: elapsed(start))
|
17
17
|
raise
|
18
18
|
end
|
19
19
|
end
|
data/lib/sonnet/version.rb
CHANGED
data/test/sonnet_test.rb
CHANGED
@@ -2,16 +2,31 @@ require "test_helper"
|
|
2
2
|
require "logger"
|
3
3
|
|
4
4
|
class SonnetTest < Minitest::Test
|
5
|
+
Error = Class.new(StandardError)
|
6
|
+
|
5
7
|
def test_that_it_has_a_version_number
|
6
8
|
refute_nil ::Sonnet::VERSION
|
7
9
|
end
|
8
10
|
|
9
11
|
def test_json_logging
|
10
|
-
io = StringIO.new
|
11
|
-
logger = Logger.new(io)
|
12
|
-
logger.extend(Sonnet::Logger)
|
13
12
|
logger.info("What's the story, morning glory?")
|
14
|
-
|
15
|
-
|
13
|
+
assert_equal log[0].fetch("message"), "What's the story, morning glory?"
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_exception_logging
|
17
|
+
logger.error(Error.new("something went wrong"))
|
18
|
+
assert_equal log[0]["message"], "something went wrong"
|
19
|
+
end
|
20
|
+
|
21
|
+
def logger
|
22
|
+
@logger ||= Logger.new(io).tap { |logger| logger.extend(Sonnet::Logger) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def io
|
26
|
+
@io ||= StringIO.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def log
|
30
|
+
io.string.each_line.map { |line| JSON.parse(line) }
|
16
31
|
end
|
17
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sonnet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cory Kaufman-Schofield
|
@@ -86,6 +86,8 @@ files:
|
|
86
86
|
- lib/sonnet/logger.rb
|
87
87
|
- lib/sonnet/monkeypatch.rb
|
88
88
|
- lib/sonnet/rails.rb
|
89
|
+
- lib/sonnet/serializer.rb
|
90
|
+
- lib/sonnet/sidekiq/exception_handler.rb
|
89
91
|
- lib/sonnet/sidekiq/job_logger.rb
|
90
92
|
- lib/sonnet/version.rb
|
91
93
|
- sonnet.gemspec
|