syslog-sd 1.2.4 → 1.3.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/.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.
|