juan_pelota 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/juan_pelota/configuration.rb +18 -0
- data/lib/juan_pelota/logger.rb +11 -0
- data/lib/juan_pelota/middlewares/logging.rb +38 -19
- data/lib/juan_pelota/version.rb +1 -1
- data/lib/juan_pelota.rb +1 -0
- data/spec/juan_pelota/logger_spec.rb +5 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 301ef9aeb35ef31a91023dbd37d61d0d50cf63c7
|
4
|
+
data.tar.gz: a7ff459f84b3a86b2c56e91ae6a1c3b0a55ad313
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8bee44669e7d913f8f98eefe73443480587be17a3866d67749d042729a83ec02818f5aa4f73cd84ed95572dbf75a9e70db73be2435c629a1f7e97d7fec7eb46
|
7
|
+
data.tar.gz: d6c91172fddec7d2ccdd11d40c855a677ba381804142a9f00fb1416876e8d1d1c5c491a2c58c8cffc732373e2fc8ed18dceeaf668375bf3c38936790e1e22d6b
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
module JuanPelota
|
4
|
+
def self.configure
|
5
|
+
if block_given?
|
6
|
+
yield Configuration.instance
|
7
|
+
else
|
8
|
+
return Configuration.instance
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Configuration
|
13
|
+
include Singleton
|
14
|
+
|
15
|
+
attr_accessor :filtered_arguments,
|
16
|
+
:filtered_workers
|
17
|
+
end
|
18
|
+
end
|
data/lib/juan_pelota/logger.rb
CHANGED
@@ -4,17 +4,23 @@ require 'json'
|
|
4
4
|
|
5
5
|
module JuanPelota
|
6
6
|
class Logger < Sidekiq::Logging::Pretty
|
7
|
+
IGNORABLE_STATUSES = %w{start done queueing}
|
8
|
+
|
7
9
|
attr_accessor :severity,
|
8
10
|
:timestamp,
|
9
11
|
:program_name,
|
10
12
|
:raw_message
|
11
13
|
|
14
|
+
# rubocop:disable Metrics/AbcSize
|
12
15
|
def call(severity, time, program_name, message)
|
13
16
|
self.severity = severity
|
14
17
|
self.timestamp = time.utc.iso8601
|
15
18
|
self.program_name = program_name
|
16
19
|
self.raw_message = message
|
17
20
|
|
21
|
+
return if config.filtered_workers.include?(worker_name.to_s) &&
|
22
|
+
IGNORABLE_STATUSES.include?(status)
|
23
|
+
|
18
24
|
{
|
19
25
|
'@type' => 'sidekiq',
|
20
26
|
'@timestamp' => timestamp,
|
@@ -32,6 +38,7 @@ class Logger < Sidekiq::Logging::Pretty
|
|
32
38
|
},
|
33
39
|
}.to_json + "\n"
|
34
40
|
end
|
41
|
+
# rubocop:enable Metrics/AbcSize
|
35
42
|
|
36
43
|
private
|
37
44
|
|
@@ -86,5 +93,9 @@ class Logger < Sidekiq::Logging::Pretty
|
|
86
93
|
def self.tid
|
87
94
|
::Thread.current.object_id.to_s(36)
|
88
95
|
end
|
96
|
+
|
97
|
+
def config
|
98
|
+
Configuration.instance
|
99
|
+
end
|
89
100
|
end
|
90
101
|
end
|
@@ -1,29 +1,33 @@
|
|
1
1
|
module JuanPelota
|
2
2
|
module Middlewares
|
3
3
|
class Logging
|
4
|
-
# rubocop:disable Lint/RescueException, Metrics/AbcSize
|
4
|
+
# rubocop:disable Lint/RescueException, Metrics/AbcSize, Metrics/MethodLength
|
5
5
|
def call(worker, job, _queue)
|
6
6
|
start = Time.now
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
unless config.filtered_workers.include? worker.class.name
|
9
|
+
logger.info(
|
10
|
+
'status' => 'start',
|
11
|
+
'jid' => job['jid'],
|
12
|
+
'bid' => job['bid'],
|
13
|
+
'run_time' => nil,
|
14
|
+
'class' => worker.class.to_s,
|
15
|
+
'args' => filtered_arguments(job['args']),
|
16
|
+
)
|
17
|
+
end
|
16
18
|
|
17
19
|
yield
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
unless config.filtered_workers.include? worker.class.name
|
22
|
+
logger.info(
|
23
|
+
'status' => 'done',
|
24
|
+
'jid' => job['jid'],
|
25
|
+
'bid' => job['bid'],
|
26
|
+
'run_time' => elapsed(start),
|
27
|
+
'class' => worker.class.to_s,
|
28
|
+
'args' => filtered_arguments(job['args']),
|
29
|
+
)
|
30
|
+
end
|
27
31
|
rescue Exception
|
28
32
|
logger.info(
|
29
33
|
'status' => 'fail',
|
@@ -31,12 +35,12 @@ class Logging
|
|
31
35
|
'bid' => job['bid'],
|
32
36
|
'run_time' => elapsed(start),
|
33
37
|
'class' => worker.class.to_s,
|
34
|
-
'args' => job['args'],
|
38
|
+
'args' => filtered_arguments(job['args']),
|
35
39
|
)
|
36
40
|
|
37
41
|
raise
|
38
42
|
end
|
39
|
-
# rubocop:enable Lint/RescueException, Metrics/AbcSize
|
43
|
+
# rubocop:enable Lint/RescueException, Metrics/AbcSize, Metrics/MethodLength
|
40
44
|
|
41
45
|
def elapsed(start)
|
42
46
|
(Time.now - start).to_f.round(3)
|
@@ -45,6 +49,21 @@ class Logging
|
|
45
49
|
def logger
|
46
50
|
Sidekiq.logger
|
47
51
|
end
|
52
|
+
|
53
|
+
def filtered_arguments(args)
|
54
|
+
return unless args
|
55
|
+
|
56
|
+
@filtered_arguments ||=
|
57
|
+
args.each_with_object({}) do | (key, value), filtered_hash|
|
58
|
+
filtered_hash[key] = value unless config.filtered_arguments.include? key
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def config
|
65
|
+
Configuration.instance
|
66
|
+
end
|
48
67
|
end
|
49
68
|
end
|
50
69
|
end
|
data/lib/juan_pelota/version.rb
CHANGED
data/lib/juan_pelota.rb
CHANGED
@@ -2,6 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module JuanPelota
|
4
4
|
describe Logger do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
Configuration.instance.filtered_workers = 'my_filtered_worker'
|
8
|
+
end
|
9
|
+
|
5
10
|
it 'takes message as a hash and logs what we want', :time_mock do
|
6
11
|
json = JuanPelota::Logger.new.call('high',
|
7
12
|
Time.now.utc,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: juan_pelota
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thekompanee
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sidekiq
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- README.md
|
92
92
|
- Rakefile
|
93
93
|
- lib/juan_pelota.rb
|
94
|
+
- lib/juan_pelota/configuration.rb
|
94
95
|
- lib/juan_pelota/logger.rb
|
95
96
|
- lib/juan_pelota/middlewares/logging.rb
|
96
97
|
- lib/juan_pelota/version.rb
|