SyslogLogger 1.4.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.
@@ -0,0 +1,7 @@
1
+ == 1.4.0 / 2007-05-08
2
+
3
+ * Split from rails_analyzer_tools.
4
+ * Added eh methods for compatibility with Logger.
5
+ * Added syslog-ng instructions. Patch by Tom Lianza.
6
+ * Fixed require in documentation. Reported by Gianni Jacklone.
7
+
@@ -0,0 +1,7 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/analyzer_tools/syslog_logger.rb
6
+ lib/syslog_logger.rb
7
+ test/test_syslog_logger.rb
@@ -0,0 +1,17 @@
1
+ = SyslogLogger
2
+
3
+ SyslogLogger is a Logger replacement that logs to syslog. It is almost
4
+ drop-in with a few caveats.
5
+
6
+ http://seattlerb.rubyforge.org/SyslogLogger
7
+
8
+ http://rubyforge.org/projects/seattlerb
9
+
10
+ == About
11
+
12
+ See SyslogLogger
13
+
14
+ == Install
15
+
16
+ sudo gem install SyslogLogger
17
+
@@ -0,0 +1,16 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'hoe'
4
+ require './lib/syslog_logger.rb'
5
+
6
+ Hoe.new('SyslogLogger', SyslogLogger::VERSION) do |p|
7
+ p.rubyforge_name = 'seattlerb'
8
+ p.author = 'Eric Hodel'
9
+ p.email = 'drbrain@segment7.net'
10
+ p.summary = p.paragraphs_of('README.txt', 1).first
11
+ p.description = p.summary
12
+ p.url = p.paragraphs_of('README.txt', 2).first
13
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
14
+ end
15
+
16
+ # vim: syntax=Ruby
@@ -0,0 +1 @@
1
+ require 'syslog_logger' # for compatibility
@@ -0,0 +1,190 @@
1
+ require 'syslog'
2
+ require 'logger'
3
+
4
+ ##
5
+ # SyslogLogger is a Logger work-alike that logs via syslog instead of to a
6
+ # file. You can add SyslogLogger to your Rails production environment to
7
+ # aggregate logs between multiple machines.
8
+ #
9
+ # By default, SyslogLogger uses the program name 'rails', but this can be
10
+ # changed via the first argument to SyslogLogger.new.
11
+ #
12
+ # NOTE! You can only set the SyslogLogger program name when you initialize
13
+ # SyslogLogger for the first time. This is a limitation of the way
14
+ # SyslogLogger uses syslog (and in some ways, a limitation of the way
15
+ # syslog(3) works). Attempts to change SyslogLogger's program name after the
16
+ # first initialization will be ignored.
17
+ #
18
+ # = Sample usage with Rails
19
+ #
20
+ # == config/environment/production.rb
21
+ #
22
+ # Add the following lines:
23
+ #
24
+ # require 'syslog_logger'
25
+ # RAILS_DEFAULT_LOGGER = SyslogLogger.new
26
+ #
27
+ # == config/environment.rb
28
+ #
29
+ # In 0.10.0, change this line:
30
+ #
31
+ # RAILS_DEFAULT_LOGGER = Logger.new("#{RAILS_ROOT}/log/#{RAILS_ENV}.log")
32
+ #
33
+ # to:
34
+ #
35
+ # RAILS_DEFAULT_LOGGER ||= Logger.new("#{RAILS_ROOT}/log/#{RAILS_ENV}.log")
36
+ #
37
+ # Other versions of Rails should have a similar change.
38
+ #
39
+ # == BSD syslog setup
40
+ #
41
+ # === /etc/syslog.conf
42
+ #
43
+ # Add the following lines:
44
+ #
45
+ # !rails
46
+ # *.* /var/log/production.log
47
+ #
48
+ # Then touch /var/log/production.log and signal syslogd with a HUP
49
+ # (killall -HUP syslogd, on FreeBSD).
50
+ #
51
+ # === /etc/newsyslog.conf
52
+ #
53
+ # Add the following line:
54
+ #
55
+ # /var/log/production.log 640 7 * @T00 Z
56
+ #
57
+ # This creates a log file that is rotated every day at midnight, gzip'd, then
58
+ # kept for 7 days. Consult newsyslog.conf(5) for more details.
59
+ #
60
+ # == syslog-ng setup
61
+ #
62
+ # === syslog-ng.conf
63
+ #
64
+ # destination rails_log { file("/var/log/production.log"); };
65
+ # filter f_rails { program("rails.*"); };
66
+ # log { source(src); filter(f_rails); destination(rails_log); };
67
+ #
68
+ # == Starting
69
+ #
70
+ # Now restart your Rails app. Your production logs should now be showing up
71
+ # in /var/log/production.log. If you have mulitple machines, you can log them
72
+ # all to a central machine with remote syslog logging for analysis. Consult
73
+ # your syslogd(8) manpage for further details.
74
+
75
+ class SyslogLogger
76
+
77
+ ##
78
+ # The version of SyslogLogger you are using.
79
+
80
+ VERSION = '1.4.0'
81
+
82
+ ##
83
+ # Maps Logger warning types to syslog(3) warning types.
84
+
85
+ LOGGER_MAP = {
86
+ :unknown => :alert,
87
+ :fatal => :err,
88
+ :error => :warning,
89
+ :warn => :notice,
90
+ :info => :info,
91
+ :debug => :debug,
92
+ }
93
+
94
+ ##
95
+ # Maps Logger log levels to their values so we can silence.
96
+
97
+ LOGGER_LEVEL_MAP = {}
98
+
99
+ LOGGER_MAP.each_key do |key|
100
+ LOGGER_LEVEL_MAP[key] = Logger.const_get key.to_s.upcase
101
+ end
102
+
103
+ ##
104
+ # Maps Logger log level values to syslog log levels.
105
+
106
+ LEVEL_LOGGER_MAP = {}
107
+
108
+ LOGGER_LEVEL_MAP.invert.each do |level, severity|
109
+ LEVEL_LOGGER_MAP[level] = LOGGER_MAP[severity]
110
+ end
111
+
112
+ ##
113
+ # Builds a methods for level +meth+.
114
+
115
+ def self.make_methods(meth)
116
+ eval <<-EOM, nil, __FILE__, __LINE__ + 1
117
+ def #{meth}(message = nil)
118
+ return true if #{LOGGER_LEVEL_MAP[meth]} < @level
119
+ SYSLOG.#{LOGGER_MAP[meth]} clean(message || yield)
120
+ return true
121
+ end
122
+
123
+ def #{meth}?
124
+ @level <= Logger::#{meth.to_s.upcase}
125
+ end
126
+ EOM
127
+ end
128
+
129
+ LOGGER_MAP.each_key do |level|
130
+ make_methods level
131
+ end
132
+
133
+ ##
134
+ # Log level for Logger compatibility.
135
+
136
+ attr_accessor :level
137
+
138
+ ##
139
+ # Fills in variables for Logger compatibility. If this is the first
140
+ # instance of SyslogLogger, +program_name+ may be set to change the logged
141
+ # program name.
142
+ #
143
+ # Due to the way syslog works, only one program name may be chosen.
144
+
145
+ def initialize(program_name = 'rails')
146
+ @level = Logger::DEBUG
147
+
148
+ return if defined? SYSLOG
149
+ self.class.const_set :SYSLOG, Syslog.open(program_name)
150
+ end
151
+
152
+ ##
153
+ # Almost duplicates Logger#add. +progname+ is ignored.
154
+
155
+ def add(severity, message = nil, progname = nil, &block)
156
+ severity ||= Logger::UNKNOWN
157
+ return true if severity < @level
158
+ message = clean(message || block.call)
159
+ SYSLOG.send LEVEL_LOGGER_MAP[severity], clean(message)
160
+ return true
161
+ end
162
+
163
+ ##
164
+ # Allows messages of a particular log level to be ignored temporarily.
165
+ #
166
+ # Can you say "Broken Windows"?
167
+
168
+ def silence(temporary_level = Logger::ERROR)
169
+ old_logger_level = @level
170
+ @level = temporary_level
171
+ yield
172
+ ensure
173
+ @level = old_logger_level
174
+ end
175
+
176
+ private
177
+
178
+ ##
179
+ # Clean up messages so they're nice and pretty.
180
+
181
+ def clean(message)
182
+ message = message.to_s.dup
183
+ message.strip!
184
+ message.gsub!(/%/, '%%') # syslog(3) freaks on % (printf)
185
+ message.gsub!(/\e\[[^m]*m/, '') # remove useless ansi color codes
186
+ return message
187
+ end
188
+
189
+ end
190
+
@@ -0,0 +1,491 @@
1
+ require 'test/unit'
2
+ require 'tempfile'
3
+ require 'syslog_logger'
4
+
5
+ module MockSyslog; end
6
+
7
+ class << MockSyslog
8
+
9
+ @line = nil
10
+
11
+ SyslogLogger::LOGGER_MAP.values.uniq.each do |level|
12
+ eval <<-EOM
13
+ def #{level}(message)
14
+ @line = "#{level.to_s.upcase} - \#{message}"
15
+ end
16
+ EOM
17
+ end
18
+
19
+ attr_reader :line
20
+ attr_reader :program_name
21
+
22
+ def open(program_name)
23
+ @program_name = program_name
24
+ end
25
+
26
+ def reset
27
+ @line = ''
28
+ end
29
+
30
+ end
31
+
32
+ SyslogLogger.const_set :SYSLOG, MockSyslog
33
+
34
+ class TestLogger < Test::Unit::TestCase
35
+
36
+ LEVEL_LABEL_MAP = {
37
+ Logger::DEBUG => 'DEBUG',
38
+ Logger::INFO => 'INFO',
39
+ Logger::WARN => 'WARN',
40
+ Logger::ERROR => 'ERROR',
41
+ Logger::FATAL => 'FATAL',
42
+ Logger::UNKNOWN => 'ANY',
43
+ }
44
+
45
+ def setup
46
+ @logger = Logger.new(nil)
47
+ end
48
+
49
+ class Log
50
+ attr_reader :line, :label, :datetime, :pid, :severity, :progname, :msg
51
+ def initialize(line)
52
+ @line = line
53
+ /\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ @line
54
+ @label, @datetime, @pid, @severity, @progname, @msg = $1, $2, $3, $4, $5, $6
55
+ end
56
+ end
57
+
58
+ def log_add(severity, msg, progname = nil, &block)
59
+ log(:add, severity, msg, progname, &block)
60
+ end
61
+
62
+ def log(msg_id, *arg, &block)
63
+ Log.new(log_raw(msg_id, *arg, &block))
64
+ end
65
+
66
+ def log_raw(msg_id, *arg, &block)
67
+ logdev = Tempfile.new(File.basename(__FILE__) + '.log')
68
+ @logger.instance_eval { @logdev = Logger::LogDevice.new(logdev) }
69
+ assert_equal true, @logger.__send__(msg_id, *arg, &block)
70
+ logdev.open
71
+ msg = logdev.read
72
+ logdev.close
73
+ msg
74
+ end
75
+
76
+ def test_initialize
77
+ assert_equal Logger::DEBUG, @logger.level
78
+ end
79
+
80
+ def test_add
81
+ msg = log_add nil, 'unknown level message' # nil == unknown
82
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
83
+
84
+ msg = log_add Logger::FATAL, 'fatal level message'
85
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
86
+
87
+ msg = log_add Logger::ERROR, 'error level message'
88
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
89
+
90
+ msg = log_add Logger::WARN, 'warn level message'
91
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
92
+
93
+ msg = log_add Logger::INFO, 'info level message'
94
+ assert_equal LEVEL_LABEL_MAP[Logger::INFO], msg.severity
95
+
96
+ msg = log_add Logger::DEBUG, 'debug level message'
97
+ assert_equal LEVEL_LABEL_MAP[Logger::DEBUG], msg.severity
98
+ end
99
+
100
+ def test_add_level_unknown
101
+ @logger.level = Logger::UNKNOWN
102
+
103
+ msg = log_add nil, 'unknown level message' # nil == unknown
104
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
105
+
106
+ msg = log_add Logger::FATAL, 'fatal level message'
107
+ assert_equal '', msg.line
108
+
109
+ msg = log_add Logger::ERROR, 'error level message'
110
+ assert_equal '', msg.line
111
+
112
+ msg = log_add Logger::WARN, 'warn level message'
113
+ assert_equal '', msg.line
114
+
115
+ msg = log_add Logger::INFO, 'info level message'
116
+ assert_equal '', msg.line
117
+
118
+ msg = log_add Logger::DEBUG, 'debug level message'
119
+ assert_equal '', msg.line
120
+ end
121
+
122
+ def test_add_level_fatal
123
+ @logger.level = Logger::FATAL
124
+
125
+ msg = log_add nil, 'unknown level message' # nil == unknown
126
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
127
+
128
+ msg = log_add Logger::FATAL, 'fatal level message'
129
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
130
+
131
+ msg = log_add Logger::ERROR, 'error level message'
132
+ assert_equal '', msg.line
133
+
134
+ msg = log_add Logger::WARN, 'warn level message'
135
+ assert_equal '', msg.line
136
+
137
+ msg = log_add Logger::INFO, 'info level message'
138
+ assert_equal '', msg.line
139
+
140
+ msg = log_add Logger::DEBUG, 'debug level message'
141
+ assert_equal '', msg.line
142
+ end
143
+
144
+ def test_add_level_error
145
+ @logger.level = Logger::ERROR
146
+
147
+ msg = log_add nil, 'unknown level message' # nil == unknown
148
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
149
+
150
+ msg = log_add Logger::FATAL, 'fatal level message'
151
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
152
+
153
+ msg = log_add Logger::ERROR, 'error level message'
154
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
155
+
156
+ msg = log_add Logger::WARN, 'warn level message'
157
+ assert_equal '', msg.line
158
+
159
+ msg = log_add Logger::INFO, 'info level message'
160
+ assert_equal '', msg.line
161
+
162
+ msg = log_add Logger::DEBUG, 'debug level message'
163
+ assert_equal '', msg.line
164
+ end
165
+
166
+ def test_add_level_warn
167
+ @logger.level = Logger::WARN
168
+
169
+ msg = log_add nil, 'unknown level message' # nil == unknown
170
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
171
+
172
+ msg = log_add Logger::FATAL, 'fatal level message'
173
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
174
+
175
+ msg = log_add Logger::ERROR, 'error level message'
176
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
177
+
178
+ msg = log_add Logger::WARN, 'warn level message'
179
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
180
+
181
+ msg = log_add Logger::INFO, 'info level message'
182
+ assert_equal '', msg.line
183
+
184
+ msg = log_add Logger::DEBUG, 'debug level message'
185
+ assert_equal '', msg.line
186
+ end
187
+
188
+ def test_add_level_info
189
+ @logger.level = Logger::INFO
190
+
191
+ msg = log_add nil, 'unknown level message' # nil == unknown
192
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
193
+
194
+ msg = log_add Logger::FATAL, 'fatal level message'
195
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
196
+
197
+ msg = log_add Logger::ERROR, 'error level message'
198
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
199
+
200
+ msg = log_add Logger::WARN, 'warn level message'
201
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
202
+
203
+ msg = log_add Logger::INFO, 'info level message'
204
+ assert_equal LEVEL_LABEL_MAP[Logger::INFO], msg.severity
205
+
206
+ msg = log_add Logger::DEBUG, 'debug level message'
207
+ assert_equal '', msg.line
208
+ end
209
+
210
+ def test_add_level_debug
211
+ @logger.level = Logger::DEBUG
212
+
213
+ msg = log_add nil, 'unknown level message' # nil == unknown
214
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
215
+
216
+ msg = log_add Logger::FATAL, 'fatal level message'
217
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
218
+
219
+ msg = log_add Logger::ERROR, 'error level message'
220
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
221
+
222
+ msg = log_add Logger::WARN, 'warn level message'
223
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
224
+
225
+ msg = log_add Logger::INFO, 'info level message'
226
+ assert_equal LEVEL_LABEL_MAP[Logger::INFO], msg.severity
227
+
228
+ msg = log_add Logger::DEBUG, 'debug level message'
229
+ assert_equal LEVEL_LABEL_MAP[Logger::DEBUG], msg.severity
230
+ end
231
+
232
+ def test_unknown
233
+ msg = log :unknown, 'unknown level message'
234
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
235
+
236
+ @logger.level = Logger::UNKNOWN
237
+ msg = log :unknown, 'unknown level message'
238
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
239
+
240
+ @logger.level = Logger::FATAL
241
+ msg = log :unknown, 'unknown level message'
242
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
243
+
244
+ @logger.level = Logger::ERROR
245
+ msg = log :unknown, 'unknown level message'
246
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
247
+
248
+ @logger.level = Logger::WARN
249
+ msg = log :unknown, 'unknown level message'
250
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
251
+
252
+ @logger.level = Logger::INFO
253
+ msg = log :unknown, 'unknown level message'
254
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
255
+
256
+ @logger.level = Logger::DEBUG
257
+ msg = log :unknown, 'unknown level message'
258
+ assert_equal LEVEL_LABEL_MAP[Logger::UNKNOWN], msg.severity
259
+ end
260
+
261
+ def test_unknown_eh
262
+ @logger.level = Logger::UNKNOWN
263
+ assert_equal true, @logger.unknown?
264
+
265
+ @logger.level = Logger::UNKNOWN + 1
266
+ assert_equal false, @logger.unknown?
267
+ end
268
+
269
+ def test_fatal
270
+ msg = log :fatal, 'fatal level message'
271
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
272
+
273
+ @logger.level = Logger::UNKNOWN
274
+ msg = log :fatal, 'fatal level message'
275
+ assert_equal '', msg.line
276
+
277
+ @logger.level = Logger::FATAL
278
+ msg = log :fatal, 'fatal level message'
279
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
280
+
281
+ @logger.level = Logger::ERROR
282
+ msg = log :fatal, 'fatal level message'
283
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
284
+
285
+ @logger.level = Logger::WARN
286
+ msg = log :fatal, 'fatal level message'
287
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
288
+
289
+ @logger.level = Logger::INFO
290
+ msg = log :fatal, 'fatal level message'
291
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
292
+
293
+ @logger.level = Logger::DEBUG
294
+ msg = log :fatal, 'fatal level message'
295
+ assert_equal LEVEL_LABEL_MAP[Logger::FATAL], msg.severity
296
+ end
297
+
298
+ def test_fatal_eh
299
+ @logger.level = Logger::FATAL
300
+ assert_equal true, @logger.fatal?
301
+
302
+ @logger.level = Logger::UNKNOWN
303
+ assert_equal false, @logger.fatal?
304
+ end
305
+
306
+ def test_error
307
+ msg = log :error, 'error level message'
308
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
309
+
310
+ @logger.level = Logger::UNKNOWN
311
+ msg = log :error, 'error level message'
312
+ assert_equal '', msg.line
313
+
314
+ @logger.level = Logger::FATAL
315
+ msg = log :error, 'error level message'
316
+ assert_equal '', msg.line
317
+
318
+ @logger.level = Logger::ERROR
319
+ msg = log :error, 'error level message'
320
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
321
+
322
+ @logger.level = Logger::WARN
323
+ msg = log :error, 'error level message'
324
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
325
+
326
+ @logger.level = Logger::INFO
327
+ msg = log :error, 'error level message'
328
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
329
+
330
+ @logger.level = Logger::DEBUG
331
+ msg = log :error, 'error level message'
332
+ assert_equal LEVEL_LABEL_MAP[Logger::ERROR], msg.severity
333
+ end
334
+
335
+ def test_error_eh
336
+ @logger.level = Logger::ERROR
337
+ assert_equal true, @logger.error?
338
+
339
+ @logger.level = Logger::FATAL
340
+ assert_equal false, @logger.error?
341
+ end
342
+
343
+ def test_warn
344
+ msg = log :warn, 'warn level message'
345
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
346
+
347
+ @logger.level = Logger::UNKNOWN
348
+ msg = log :warn, 'warn level message'
349
+ assert_equal '', msg.line
350
+
351
+ @logger.level = Logger::FATAL
352
+ msg = log :warn, 'warn level message'
353
+ assert_equal '', msg.line
354
+
355
+ @logger.level = Logger::ERROR
356
+ msg = log :warn, 'warn level message'
357
+ assert_equal '', msg.line
358
+
359
+ @logger.level = Logger::WARN
360
+ msg = log :warn, 'warn level message'
361
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
362
+
363
+ @logger.level = Logger::INFO
364
+ msg = log :warn, 'warn level message'
365
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
366
+
367
+ @logger.level = Logger::DEBUG
368
+ msg = log :warn, 'warn level message'
369
+ assert_equal LEVEL_LABEL_MAP[Logger::WARN], msg.severity
370
+ end
371
+
372
+ def test_warn_eh
373
+ @logger.level = Logger::WARN
374
+ assert_equal true, @logger.warn?
375
+
376
+ @logger.level = Logger::ERROR
377
+ assert_equal false, @logger.warn?
378
+ end
379
+
380
+ def test_info
381
+ msg = log :info, 'info level message'
382
+ assert_equal LEVEL_LABEL_MAP[Logger::INFO], msg.severity
383
+
384
+ @logger.level = Logger::UNKNOWN
385
+ msg = log :info, 'info level message'
386
+ assert_equal '', msg.line
387
+
388
+ @logger.level = Logger::FATAL
389
+ msg = log :info, 'info level message'
390
+ assert_equal '', msg.line
391
+
392
+ @logger.level = Logger::ERROR
393
+ msg = log :info, 'info level message'
394
+ assert_equal '', msg.line
395
+
396
+ @logger.level = Logger::WARN
397
+ msg = log :info, 'info level message'
398
+ assert_equal '', msg.line
399
+
400
+ @logger.level = Logger::INFO
401
+ msg = log :info, 'info level message'
402
+ assert_equal LEVEL_LABEL_MAP[Logger::INFO], msg.severity
403
+
404
+ @logger.level = Logger::DEBUG
405
+ msg = log :info, 'info level message'
406
+ assert_equal LEVEL_LABEL_MAP[Logger::INFO], msg.severity
407
+ end
408
+
409
+ def test_info_eh
410
+ @logger.level = Logger::INFO
411
+ assert_equal true, @logger.info?
412
+
413
+ @logger.level = Logger::WARN
414
+ assert_equal false, @logger.info?
415
+ end
416
+
417
+ def test_debug
418
+ msg = log :debug, 'debug level message'
419
+ assert_equal LEVEL_LABEL_MAP[Logger::DEBUG], msg.severity
420
+
421
+ @logger.level = Logger::UNKNOWN
422
+ msg = log :debug, 'debug level message'
423
+ assert_equal '', msg.line
424
+
425
+ @logger.level = Logger::FATAL
426
+ msg = log :debug, 'debug level message'
427
+ assert_equal '', msg.line
428
+
429
+ @logger.level = Logger::ERROR
430
+ msg = log :debug, 'debug level message'
431
+ assert_equal '', msg.line
432
+
433
+ @logger.level = Logger::WARN
434
+ msg = log :debug, 'debug level message'
435
+ assert_equal '', msg.line
436
+
437
+ @logger.level = Logger::INFO
438
+ msg = log :debug, 'debug level message'
439
+ assert_equal '', msg.line
440
+
441
+ @logger.level = Logger::DEBUG
442
+ msg = log :debug, 'debug level message'
443
+ assert_equal LEVEL_LABEL_MAP[Logger::DEBUG], msg.severity
444
+ end
445
+
446
+ def test_debug_eh
447
+ @logger.level = Logger::DEBUG
448
+ assert_equal true, @logger.debug?
449
+
450
+ @logger.level = Logger::INFO
451
+ assert_equal false, @logger.debug?
452
+ end
453
+
454
+ end
455
+
456
+ class TestSyslogLogger < TestLogger
457
+
458
+ def setup
459
+ super
460
+ @logger = SyslogLogger.new
461
+ end
462
+
463
+ class Log
464
+ attr_reader :line, :label, :datetime, :pid, :severity, :progname, :msg
465
+ def initialize(line)
466
+ @line = line
467
+ return unless /\A(\w+) - (.*)\Z/ =~ @line
468
+ severity, @msg = $1, $2
469
+ severity = SyslogLogger::LOGGER_MAP.invert[severity.downcase.intern]
470
+ @severity = severity.to_s.upcase
471
+ @severity = 'ANY' if @severity == 'UNKNOWN'
472
+ end
473
+ end
474
+
475
+ def log_add(severity, msg, progname = nil, &block)
476
+ log(:add, severity, msg, progname, &block)
477
+ end
478
+
479
+ def log(msg_id, *arg, &block)
480
+ Log.new(log_raw(msg_id, *arg, &block))
481
+ end
482
+
483
+ def log_raw(msg_id, *arg, &block)
484
+ assert_equal true, @logger.__send__(msg_id, *arg, &block)
485
+ msg = MockSyslog.line
486
+ MockSyslog.reset
487
+ return msg
488
+ end
489
+
490
+ end
491
+
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: SyslogLogger
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.4.0
7
+ date: 2007-05-08 00:00:00 -07:00
8
+ summary: SyslogLogger is a Logger replacement that logs to syslog. It is almost drop-in with a few caveats.
9
+ require_paths:
10
+ - lib
11
+ email: drbrain@segment7.net
12
+ homepage: http://seattlerb.rubyforge.org/SyslogLogger
13
+ rubyforge_project: seattlerb
14
+ description: SyslogLogger is a Logger replacement that logs to syslog. It is almost drop-in with a few caveats.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Eric Hodel
31
+ files:
32
+ - History.txt
33
+ - Manifest.txt
34
+ - README.txt
35
+ - Rakefile
36
+ - lib/analyzer_tools/syslog_logger.rb
37
+ - lib/syslog_logger.rb
38
+ - test/test_syslog_logger.rb
39
+ test_files:
40
+ - test/test_syslog_logger.rb
41
+ rdoc_options: []
42
+
43
+ extra_rdoc_files: []
44
+
45
+ executables: []
46
+
47
+ extensions: []
48
+
49
+ requirements: []
50
+
51
+ dependencies:
52
+ - !ruby/object:Gem::Dependency
53
+ name: hoe
54
+ version_requirement:
55
+ version_requirements: !ruby/object:Gem::Version::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.2.0
60
+ version: