graylog2_exceptions 0.5.1

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.
data/Manifest ADDED
@@ -0,0 +1,4 @@
1
+ Manifest
2
+ Rakefile
3
+ graylog2_exceptions.gemspec
4
+ lib/graylog2_exceptions.rb
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('graylog2_exceptions', '0.5.1') do |p|
6
+ p.description = "A Rack middleware that sends every Exception as GELF message to your Graylog2 server"
7
+ p.url = 'http://www.graylog2.org/'
8
+ p.author = 'Lennart Koopmann'
9
+ p.email = 'lennart@socketfeed.com'
10
+ p.runtime_dependencies = ["gelf"]
11
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{graylog2_exceptions}
5
+ s.version = "0.5.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Lennart Koopmann"]
9
+ s.date = %q{2010-10-08}
10
+ s.description = %q{A Rack middleware that sends every Exception as GELF message to your Graylog2 server}
11
+ s.email = %q{lennart@socketfeed.com}
12
+ s.extra_rdoc_files = ["lib/graylog2_exceptions.rb"]
13
+ s.files = ["Manifest", "Rakefile", "graylog2_exceptions.gemspec", "lib/graylog2_exceptions.rb"]
14
+ s.homepage = %q{http://www.graylog2.org/}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Graylog2_exceptions"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{graylog2_exceptions}
18
+ s.rubygems_version = %q{1.3.7}
19
+ s.summary = %q{A Rack middleware that sends every Exception as GELF message to your Graylog2 server}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<gelf>, [">= 0"])
27
+ else
28
+ s.add_dependency(%q<gelf>, [">= 0"])
29
+ end
30
+ else
31
+ s.add_dependency(%q<gelf>, [">= 0"])
32
+ end
33
+ end
@@ -0,0 +1,46 @@
1
+ require 'rubygems'
2
+ require 'gelf'
3
+ require 'socket'
4
+
5
+ class Graylog2Exceptions
6
+ def initialize(app, options)
7
+ @gl2_hostname = options[:host] || "localhost"
8
+ @gl2_port = options[:port] || 12201
9
+ @local_app_name = options[:local_app_name] || Socket::gethostname
10
+
11
+ @app = app
12
+ end
13
+
14
+ def call(env)
15
+ # Make thread safe
16
+ dup._call(env)
17
+ end
18
+
19
+ def _call(env)
20
+ begin
21
+ # Call the app we are monitoring
22
+ @app.call(env)
23
+ rescue StandardError, SyntaxError, LoadError => err
24
+ # An exception has been raised. Send to Graylog2!
25
+ send_to_graylog2(err)
26
+
27
+ # Raise the exception again to pass back to app.
28
+ raise
29
+ end
30
+ end
31
+
32
+ def send_to_graylog2 err
33
+ begin
34
+ gelf = Graylog2::Gelf.new @gl2_hostname, @gl2_port
35
+ gelf.short_message = err.message
36
+ gelf.full_message = err.backtrace.join("\n")
37
+ gelf.level = @level
38
+ gelf.host = @local_app_name
39
+ gelf.file = err.backtrace[0].split(":")[0]
40
+ gelf.line = err.backtrace[0].split(":")[1]
41
+ gelf.send
42
+ rescue => i_err
43
+ puts "Graylog2 Exception logger. Could not send message: " + i_err.message
44
+ end
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: graylog2_exceptions
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 5
9
+ - 1
10
+ version: 0.5.1
11
+ platform: ruby
12
+ authors:
13
+ - Lennart Koopmann
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-08 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: gelf
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: A Rack middleware that sends every Exception as GELF message to your Graylog2 server
36
+ email: lennart@socketfeed.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - lib/graylog2_exceptions.rb
43
+ files:
44
+ - Manifest
45
+ - Rakefile
46
+ - graylog2_exceptions.gemspec
47
+ - lib/graylog2_exceptions.rb
48
+ has_rdoc: true
49
+ homepage: http://www.graylog2.org/
50
+ licenses: []
51
+
52
+ post_install_message:
53
+ rdoc_options:
54
+ - --line-numbers
55
+ - --inline-source
56
+ - --title
57
+ - Graylog2_exceptions
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ hash: 3
66
+ segments:
67
+ - 0
68
+ version: "0"
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 11
75
+ segments:
76
+ - 1
77
+ - 2
78
+ version: "1.2"
79
+ requirements: []
80
+
81
+ rubyforge_project: graylog2_exceptions
82
+ rubygems_version: 1.3.7
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: A Rack middleware that sends every Exception as GELF message to your Graylog2 server
86
+ test_files: []
87
+