juan_pelota 0.0.2 → 0.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 775db30433abf9c077d94b7f31005eaf7bf27511
4
- data.tar.gz: 87c6efdefee9cc7b2f06a85283508433427c206e
3
+ metadata.gz: 301ef9aeb35ef31a91023dbd37d61d0d50cf63c7
4
+ data.tar.gz: a7ff459f84b3a86b2c56e91ae6a1c3b0a55ad313
5
5
  SHA512:
6
- metadata.gz: f6151cfaece2183e9f03ea56c233330ada563c71a13aca7987d67674697f194a713ff6397d2bd3b2557b0a1f0d767b872e797d204babd50a2acaf4ec4982e475
7
- data.tar.gz: 54c8a9a2c8ae575dd61dc15ba7901c6bf813c8afedff37261c936a29ddf39e6c9ce695e245cecb4101f964cdd847c413e36704cd07155c92695abfa7b8c2c50d
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
@@ -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
- logger.info(
9
- 'status' => 'start',
10
- 'jid' => job['jid'],
11
- 'bid' => job['bid'],
12
- 'run_time' => nil,
13
- 'class' => worker.class.to_s,
14
- 'args' => job['args'],
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
- logger.info(
20
- 'status' => 'done',
21
- 'jid' => job['jid'],
22
- 'bid' => job['bid'],
23
- 'run_time' => elapsed(start),
24
- 'class' => worker.class.to_s,
25
- 'args' => job['args'],
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
@@ -1,3 +1,3 @@
1
1
  module JuanPelota
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
data/lib/juan_pelota.rb CHANGED
@@ -1,2 +1,3 @@
1
1
  require 'juan_pelota/middlewares/logging'
2
2
  require 'juan_pelota/logger'
3
+ require 'juan_pelota/configuration'
@@ -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.2
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-02-25 00:00:00.000000000 Z
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