sidekiq-gelf 0.0.2 → 1.0.0

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