syslog-sd 1.2.4 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +9 -0
- data/CHANGELOG +9 -4
- data/README.rdoc +2 -0
- data/VERSION +1 -1
- data/lib/syslog-sd/notifier.rb +10 -1
- data/syslog-sd.gemspec +11 -10
- data/test/test_notifier.rb +34 -6
- metadata +7 -6
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
@@ -1,12 +1,17 @@
|
|
1
|
-
1.
|
1
|
+
1.3.1, 2011-11-03:
|
2
|
+
++ Merge with `gelf` gem, synchronize versions.
|
3
|
+
+ allow to rescue from network errors.
|
4
|
+
+ allow to set timestamp manually.
|
5
|
+
|
6
|
+
1.2.4, 2011-05-20:
|
2
7
|
* Fix a bug with SD-ID.
|
3
8
|
|
4
|
-
1.2.3,
|
9
|
+
1.2.3, 2011-05-18:
|
5
10
|
+ Allow to send timestamp as float if desired. It may improve server's parsing speed.
|
6
11
|
|
7
|
-
1.2.2,
|
12
|
+
1.2.2, 2011-05-17:
|
8
13
|
* Minor metadata update. Moved to http://github.com/Graylog2/syslog-sd-rb
|
9
14
|
* Return actual message from SyslogSD::Notifier#notify.
|
10
15
|
|
11
|
-
1.2.0,
|
16
|
+
1.2.0, 2011-05-17:
|
12
17
|
+ Initial version, based on master branch of `gelf` gem.
|
data/README.rdoc
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
Super-Duper library to send syslog messages over UDP to logging server such as Graylog2 (http://graylog2.org).
|
4
4
|
Supports Structured Data elements as defined by RFC 5424.
|
5
5
|
|
6
|
+
API documentation: http://rubydoc.info/github/Graylog2/syslog-sd-rb/master/frames
|
7
|
+
|
6
8
|
Based on GELF gem (https://github.com/graylog2/gelf-rb).
|
7
9
|
|
8
10
|
Works with Ruby 1.8.7 and 1.9.2. 1.8.6 is not supported.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.1
|
data/lib/syslog-sd/notifier.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module SyslogSD
|
2
2
|
# syslog notifier.
|
3
3
|
class Notifier
|
4
|
-
attr_accessor :enabled, :collect_file_and_line, :timestamp_as_float
|
4
|
+
attr_accessor :enabled, :collect_file_and_line, :rescue_network_errors, :timestamp_as_float
|
5
5
|
attr_reader :level, :default_options, :level_mapping
|
6
6
|
|
7
7
|
# +host+ and +port+ are host/ip and port of syslog server.
|
@@ -13,6 +13,7 @@ module SyslogSD
|
|
13
13
|
|
14
14
|
self.level = SyslogSD::DEBUG
|
15
15
|
self.timestamp_as_float = false
|
16
|
+
self.rescue_network_errors = false
|
16
17
|
|
17
18
|
self.default_options = default_options
|
18
19
|
self.default_options['host'] ||= Socket.gethostname
|
@@ -110,8 +111,11 @@ module SyslogSD
|
|
110
111
|
private
|
111
112
|
def notify_with_level(message_level, *args)
|
112
113
|
notify_with_level!(message_level, *args)
|
114
|
+
rescue SocketError
|
115
|
+
raise unless self.rescue_network_errors
|
113
116
|
rescue Exception => exception
|
114
117
|
notify_with_level!(SyslogSD::UNKNOWN, exception)
|
118
|
+
exception
|
115
119
|
end
|
116
120
|
|
117
121
|
def notify_with_level!(message_level, *args)
|
@@ -139,6 +143,7 @@ module SyslogSD
|
|
139
143
|
@hash = default_options.merge(self.class.stringify_keys(args.merge(primary_data)))
|
140
144
|
convert_hoptoad_keys_to_graylog2
|
141
145
|
set_file_and_line if @collect_file_and_line
|
146
|
+
set_timestamp
|
142
147
|
check_presence_of_mandatory_attributes
|
143
148
|
@hash
|
144
149
|
end
|
@@ -170,6 +175,10 @@ module SyslogSD
|
|
170
175
|
@hash['line'] = match[2].to_i
|
171
176
|
end
|
172
177
|
|
178
|
+
def set_timestamp
|
179
|
+
@hash['timestamp'] = Time.now.utc.to_f if @hash['timestamp'].nil?
|
180
|
+
end
|
181
|
+
|
173
182
|
def check_presence_of_mandatory_attributes
|
174
183
|
%w(short_message host).each do |attribute|
|
175
184
|
if @hash[attribute].to_s.empty?
|
data/syslog-sd.gemspec
CHANGED
@@ -4,19 +4,20 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.
|
7
|
+
s.name = "syslog-sd"
|
8
|
+
s.version = "1.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
11
|
+
s.authors = ["Alexey Palazhchenko", "Lennart Koopmann"]
|
12
|
+
s.date = "2011-11-03"
|
13
|
+
s.description = "Super-Duper library to send syslog messages over UDP to logging server such as Graylog2. Supports Structured Data elements as defined by RFC 5424."
|
14
|
+
s.email = "alexey.palazhchenko@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
17
|
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
|
+
".travis.yml",
|
20
21
|
"CHANGELOG",
|
21
22
|
"LICENSE",
|
22
23
|
"README.rdoc",
|
@@ -35,10 +36,10 @@ Gem::Specification.new do |s|
|
|
35
36
|
"test/test_ruby_sender.rb",
|
36
37
|
"test/test_severity.rb"
|
37
38
|
]
|
38
|
-
s.homepage =
|
39
|
-
s.require_paths = [
|
40
|
-
s.rubygems_version =
|
41
|
-
s.summary =
|
39
|
+
s.homepage = "http://github.com/Graylog2/syslog-sd-rb"
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = "1.8.11"
|
42
|
+
s.summary = "Library to send syslog messages over UDP to logging server such as Graylog2. Supports Structured Data elements as defined by RFC 5424."
|
42
43
|
|
43
44
|
if s.respond_to? :specification_version then
|
44
45
|
s.specification_version = 3
|
data/test/test_notifier.rb
CHANGED
@@ -108,6 +108,19 @@ class TestNotifier < Test::Unit::TestCase
|
|
108
108
|
assert_match /test_notifier.rb/, hash['file']
|
109
109
|
assert_equal line + 1, hash['line']
|
110
110
|
end
|
111
|
+
|
112
|
+
should "set timestamp to current time if not set" do
|
113
|
+
hash = @notifier.__send__(:extract_hash, { 'version' => '1.0', 'short_message' => 'message' })
|
114
|
+
assert_instance_of Float, hash['timestamp']
|
115
|
+
now = Time.now.utc.to_f
|
116
|
+
assert ((now - 1)..(now + 1)).include?(hash['timestamp'])
|
117
|
+
end
|
118
|
+
|
119
|
+
should "set timestamp to specified time" do
|
120
|
+
timestamp = 1319799449.13765
|
121
|
+
hash = @notifier.__send__(:extract_hash, { 'version' => '1.0', 'short_message' => 'message', 'timestamp' => timestamp })
|
122
|
+
assert_equal timestamp, hash['timestamp']
|
123
|
+
end
|
111
124
|
end
|
112
125
|
|
113
126
|
context "serialize_hash" do
|
@@ -164,12 +177,12 @@ class TestNotifier < Test::Unit::TestCase
|
|
164
177
|
|
165
178
|
should "not send notifications with level below threshold" do
|
166
179
|
@sender.expects(:send_datagram).never
|
167
|
-
@notifier.notify!(@hash.merge('level' => SyslogSD::DEBUG))
|
180
|
+
assert_nil @notifier.notify!(@hash.merge('level' => SyslogSD::DEBUG))
|
168
181
|
end
|
169
182
|
|
170
183
|
should "not notifications with level equal or above threshold" do
|
171
184
|
@sender.expects(:send_datagram).once
|
172
|
-
@notifier.notify!(@hash.merge('level' => SyslogSD::WARN))
|
185
|
+
assert_kind_of String, @notifier.notify!(@hash.merge('level' => SyslogSD::WARN))
|
173
186
|
end
|
174
187
|
end
|
175
188
|
|
@@ -181,7 +194,7 @@ class TestNotifier < Test::Unit::TestCase
|
|
181
194
|
should "not send datagram" do
|
182
195
|
@sender.expects(:send_datagram).never
|
183
196
|
@notifier.expects(:extract_hash).never
|
184
|
-
@notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
|
197
|
+
assert_nil @notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
|
185
198
|
end
|
186
199
|
|
187
200
|
context "and enabled again" do
|
@@ -191,7 +204,7 @@ class TestNotifier < Test::Unit::TestCase
|
|
191
204
|
|
192
205
|
should "send datagram" do
|
193
206
|
@sender.expects(:send_datagram)
|
194
|
-
@notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
|
207
|
+
assert_kind_of String, @notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
|
195
208
|
end
|
196
209
|
end
|
197
210
|
end
|
@@ -200,7 +213,7 @@ class TestNotifier < Test::Unit::TestCase
|
|
200
213
|
@sender.expects(:send_datagram).with do |datagram|
|
201
214
|
datagram.is_a?(String)
|
202
215
|
end
|
203
|
-
@notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
|
216
|
+
assert_kind_of String, @notifier.notify!({ 'version' => '1.0', 'short_message' => 'message' })
|
204
217
|
end
|
205
218
|
|
206
219
|
SyslogSD::Levels.constants.each do |const|
|
@@ -217,7 +230,22 @@ class TestNotifier < Test::Unit::TestCase
|
|
217
230
|
should "rescue from invalid invocation of #notify" do
|
218
231
|
@notifier.expects(:notify_with_level!).with(nil, instance_of(Hash)).raises(ArgumentError)
|
219
232
|
@notifier.expects(:notify_with_level!).with(SyslogSD::UNKNOWN, instance_of(ArgumentError))
|
220
|
-
|
233
|
+
assert_kind_of ArgumentError, @notifier.notify(:no_short_message => 'too bad')
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
context "with notifier with real sender" do
|
238
|
+
setup do
|
239
|
+
@notifier = SyslogSD::Notifier.new('no_such_host_321')
|
240
|
+
end
|
241
|
+
|
242
|
+
should "raise exception" do
|
243
|
+
assert_raise(SocketError) { @notifier.notify('Hello!') }
|
244
|
+
end
|
245
|
+
|
246
|
+
should "not raise exception if asked" do
|
247
|
+
@notifier.rescue_network_errors = true
|
248
|
+
assert_nothing_raised { @notifier.notify('Hello!') }
|
221
249
|
end
|
222
250
|
end
|
223
251
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syslog-sd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 1.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alexey Palazhchenko
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-11-03 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: shoulda
|
@@ -70,6 +70,7 @@ extra_rdoc_files:
|
|
70
70
|
- LICENSE
|
71
71
|
- README.rdoc
|
72
72
|
files:
|
73
|
+
- .travis.yml
|
73
74
|
- CHANGELOG
|
74
75
|
- LICENSE
|
75
76
|
- README.rdoc
|
@@ -116,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
117
|
requirements: []
|
117
118
|
|
118
119
|
rubyforge_project:
|
119
|
-
rubygems_version: 1.8.
|
120
|
+
rubygems_version: 1.8.11
|
120
121
|
signing_key:
|
121
122
|
specification_version: 3
|
122
123
|
summary: Library to send syslog messages over UDP to logging server such as Graylog2. Supports Structured Data elements as defined by RFC 5424.
|