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 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