sidekiq-gelf 0.0.2 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3369600b6f033ab0be05cf913a3185e279d4161
4
- data.tar.gz: fe0940b6754d0dad4008db0f227eef05c257944e
3
+ metadata.gz: 0161085b4bfbd7f4835b5c1158abaed97562c28a
4
+ data.tar.gz: 9764d0c63c041f58b5708ad7337e422ff2dac164
5
5
  SHA512:
6
- metadata.gz: 3013683629056cfdbc54c8044f0cb5a2e38b1652678ce3b1fc15a8a8592f852e4c970ef329234ba89ad7f300be8d38b84bb6678fdd47fb5cf4d9d5f428e82a01
7
- data.tar.gz: 12e263f7bae80326bb2e13e97be9b1312f4a53c37a14aa949a453930188f78e7c085f5f9e6cd55b048792b34ddff2497f35d38137d339c6158d5efa31497e207
6
+ metadata.gz: 457ccf8317313e94edca9a7d8a0da5cfd268e50d7b474451dc58bfa19b889772ae5e9c27611ee6d7acd2b78e17b2a429363199f3b03210d713d3567d359743bf
7
+ data.tar.gz: a150d03466d764bd25f7d9478ad0c83b322c95db65c8b7d50333bbb35638e98f9331d111d61a63548def235428fc543b9b72fdadbc973ff932aaa94870542b2d
data/README.md CHANGED
@@ -2,13 +2,21 @@
2
2
 
3
3
  Enables Sidekiq logging to a GELF-supported server, such as Graylog2.
4
4
 
5
- **Note:** at this time, you must use [this version](https://github.com/layervault/gelf-rb) of gelf-rb. The main version does not have formatted logging support yet.
6
-
7
5
  ## Usage
8
6
 
9
7
  ``` ruby
10
- # Replace the sidekiq logger with gelf-rb and set the formatter
8
+ # Adds the GELF logger as middleware in Sidekiq in order
11
9
  # to include important logging information.
12
10
  # These arguments are passed through to gelf-rb.
13
11
  Sidekiq::Logging::GELF.hook!('127.0.0.1', 12201, 'LAN', facility: "my-application")
12
+ ```
13
+
14
+ **Note:** by default, normal logging is left as-is. If you wish to log only to the GELF input, you can do:
15
+
16
+ ``` ruby
17
+ Sidekiq.configure_server do |config|
18
+ config.server_middleware do |chain|
19
+ chain.remove Sidekiq::Middleware::Server::Logging
20
+ end
21
+ end
14
22
  ```
data/lib/sidekiq-gelf.rb CHANGED
@@ -2,7 +2,7 @@ require 'logger'
2
2
  require 'gelf'
3
3
  require 'sidekiq'
4
4
 
5
- require 'sidekiq-gelf/formatter'
5
+ require 'sidekiq-gelf/middleware'
6
6
 
7
7
  module Sidekiq
8
8
  module Logging
@@ -10,8 +10,11 @@ module Sidekiq
10
10
  extend self
11
11
 
12
12
  def hook!(*args)
13
- Sidekiq::Logging.logger = ::GELF::Logger.new(*args)
14
- Sidekiq::Logging.logger.formatter = Formatter.new
13
+ Sidekiq.configure_server do |config|
14
+ config.server_middleware do |chain|
15
+ chain.add Middleware::Server::GELFLogging, *args
16
+ end
17
+ end
15
18
  end
16
19
  end
17
20
  end
@@ -0,0 +1,83 @@
1
+ module Sidekiq
2
+ module Middleware
3
+ module Server
4
+ class GELFLogging
5
+ def initialize(*args)
6
+ @args = *args
7
+ end
8
+
9
+ def call(worker, item, queue)
10
+ Sidekiq::Logging.with_context("#{worker.class.to_s} JID-#{item['jid']}") do
11
+ begin
12
+ logger.info({
13
+ short_message: "Start: #{worker.class.to_s} JID-#{item['jid']}",
14
+ jid: item['jid'],
15
+ pid: pid,
16
+ tid: tid,
17
+ context: context,
18
+ worker: worker.class.to_s,
19
+ queue: queue,
20
+ params: item['args']
21
+ })
22
+
23
+ start = Time.now
24
+
25
+ yield # Pass the torch
26
+
27
+ logger.info({
28
+ short_message: "Done: #{worker.class.to_s} JID-#{item['jid']}",
29
+ jid: item['jid'],
30
+ pid: pid,
31
+ tid: tid,
32
+ context: context,
33
+ worker: worker.class.to_s,
34
+ queue: queue,
35
+ params: item['args'],
36
+ runtime: elapsed(start)
37
+ })
38
+ rescue Exception => e
39
+ logger.error({
40
+ short_message: "Fail: #{worker.class.to_s} JID-#{item['jid']}",
41
+ jid: item['jid'],
42
+ pid: pid,
43
+ tid: tid,
44
+ context: context,
45
+ worker: worker.class.to_s,
46
+ queue: queue,
47
+ params: item['args'],
48
+ runtime: elapsed(start),
49
+ exception_class: e.class.to_s,
50
+ exception_message: e.message,
51
+ backtrace: e.backtrace.join("\n")
52
+ })
53
+
54
+ raise e
55
+ end
56
+ end
57
+ end
58
+
59
+ def logger
60
+ @logger ||= ::GELF::Logger.new(*@args)
61
+ end
62
+
63
+ private
64
+
65
+ def pid
66
+ Process.pid
67
+ end
68
+
69
+ def tid
70
+ Thread.current.object_id.to_s(36)
71
+ end
72
+
73
+ def context
74
+ Thread.current[:sidekiq_context]
75
+ end
76
+
77
+ def elapsed(start)
78
+ (Time.now - start).to_f.round(3)
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
data/sidekiq-gelf.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "sidekiq-gelf"
5
- s.version = "0.0.2"
5
+ s.version = "1.0.0"
6
6
 
7
7
  s.author = "Ryan LeFevre"
8
8
  s.date = "2014-04-21"
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.summary = "Format Sidekiq log messages for a GELF-supported logging server like Graylog2"
19
19
  s.license = 'MIT'
20
20
 
21
- s.add_dependency "gelf", '~> 1.5'
21
+ s.add_dependency "gelf", '>= 1.4'
22
22
  s.add_dependency "sidekiq", '~> 3'
23
23
 
24
24
  s.add_development_dependency 'rake'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-gelf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan LeFevre
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: gelf
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '1.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: '1.5'
26
+ version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sidekiq
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ files:
66
66
  - README.md
67
67
  - Rakefile
68
68
  - lib/sidekiq-gelf.rb
69
- - lib/sidekiq-gelf/formatter.rb
69
+ - lib/sidekiq-gelf/middleware.rb
70
70
  - sidekiq-gelf.gemspec
71
71
  homepage: http://github.com/layervault/sidekiq-gelf-rb
72
72
  licenses:
@@ -1,15 +0,0 @@
1
- module Sidekiq
2
- module Logging
3
- module GELF
4
- class Formatter < Logger::Formatter
5
- def call(severity, time, facility, message)
6
- message.merge({
7
- pid: Process.pid,
8
- tid: Thread.current.object_id.to_s(36),
9
- context: Thread.current[:sidekiq_context]
10
- })
11
- end
12
- end
13
- end
14
- end
15
- end