SyslogLogger 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: