TwP-logging 0.9.8 → 0.9.8.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,7 +11,7 @@ module TestAppenders
11
11
 
12
12
  def setup
13
13
  super
14
- ::Logging.init
14
+ Logging.init
15
15
 
16
16
  FileUtils.mkdir [File.join(TMP, 'dir'), File.join(TMP, 'uw_dir')]
17
17
  FileUtils.chmod 0555, File.join(TMP, 'uw_dir')
@@ -22,26 +22,26 @@ module TestAppenders
22
22
  def test_class_assert_valid_logfile
23
23
  log = File.join(TMP, 'uw_dir', 'file.log')
24
24
  assert_raise(ArgumentError) do
25
- ::Logging::Appenders::File.assert_valid_logfile(log)
25
+ Logging.appenders.file.assert_valid_logfile(log)
26
26
  end
27
27
 
28
28
  log = File.join(TMP, 'dir')
29
29
  assert_raise(ArgumentError) do
30
- ::Logging::Appenders::File.assert_valid_logfile(log)
30
+ Logging.appenders.file.assert_valid_logfile(log)
31
31
  end
32
32
 
33
33
  log = File.join(TMP, 'uw_file')
34
34
  assert_raise(ArgumentError) do
35
- ::Logging::Appenders::File.assert_valid_logfile(log)
35
+ Logging.appenders.file.assert_valid_logfile(log)
36
36
  end
37
37
 
38
38
  log = File.join(TMP, 'file.log')
39
- assert ::Logging::Appenders::File.assert_valid_logfile(log)
39
+ assert Logging.appenders.file.assert_valid_logfile(log)
40
40
  end
41
41
 
42
42
  def test_initialize
43
43
  log = File.join(TMP, 'file.log')
44
- appender = ::Logging::Appenders::File.new(NAME, 'filename' => log)
44
+ appender = Logging.appenders.file(NAME, 'filename' => log)
45
45
  assert_equal 'logfile', appender.name
46
46
  appender << "This will be the first line\n"
47
47
  appender << "This will be the second line\n"
@@ -53,7 +53,7 @@ module TestAppenders
53
53
  end
54
54
  cleanup
55
55
 
56
- appender = ::Logging::Appenders::File.new NAME, :filename => log
56
+ appender = Logging.appenders.file(NAME, :filename => log)
57
57
  assert_equal 'logfile', appender.name
58
58
  appender << "This will be the third line\n"
59
59
  appender.flush
@@ -65,8 +65,8 @@ module TestAppenders
65
65
  end
66
66
  cleanup
67
67
 
68
- appender = ::Logging::Appenders::File.new NAME, :filename => log,
69
- :truncate => true
68
+ appender = Logging.appenders.file(NAME, :filename => log,
69
+ :truncate => true)
70
70
  assert_equal 'logfile', appender.name
71
71
  appender << "The file was truncated\n"
72
72
  appender.flush
@@ -79,9 +79,9 @@ module TestAppenders
79
79
 
80
80
  private
81
81
  def cleanup
82
- unless ::Logging::Appender[NAME].nil?
83
- ::Logging::Appender[NAME].close false
84
- ::Logging::Appender[NAME] = nil
82
+ unless Logging.appenders[NAME].nil?
83
+ Logging.appenders[NAME].close false
84
+ Logging.appenders[NAME] = nil
85
85
  end
86
86
  end
87
87
 
@@ -11,15 +11,14 @@ module TestAppenders
11
11
 
12
12
  def setup
13
13
  super
14
- ::Logging.init
15
- @levels = ::Logging::LEVELS
16
14
 
17
- @appender = ::Logging::Appenders::Growl.new('growl',
15
+ @appender = Logging.appenders.growl('growl',
18
16
  :coalesce => true, :separator => "\000",
19
- :layout => Logging::Layouts::Pattern.new(:pattern => "%5l - Test\000%m")
17
+ :layout => Logging.layouts.pattern(:pattern => "%5l - Test\000%m")
20
18
  )
21
19
  @appender.level = :all
22
20
  @growl = @appender.instance_variable_get(:@growl).dup
21
+ @levels = Logging::LEVELS
23
22
  end
24
23
 
25
24
  def test_initialize
@@ -29,10 +28,10 @@ module TestAppenders
29
28
  end
30
29
 
31
30
  def test_append
32
- info = ::Logging::LogEvent.new('TestLogger', @levels['info'],
33
- 'info message', false)
34
- warn = ::Logging::LogEvent.new('TestLogger', @levels['warn'],
35
- 'warning message', false)
31
+ info = Logging::LogEvent.new('TestLogger', @levels['info'],
32
+ 'info message', false)
33
+ warn = Logging::LogEvent.new('TestLogger', @levels['warn'],
34
+ 'warning message', false)
36
35
 
37
36
  flexmock(@appender).should_receive(:system => true).once.with(
38
37
  @growl % ['WARN - Test', "warning message\nwarning message\nwarning message", 0])
@@ -54,8 +53,8 @@ module TestAppenders
54
53
 
55
54
  def test_append_without_coalescing
56
55
  @appender.instance_variable_set(:@coalesce, false)
57
- event = ::Logging::LogEvent.new('TestLogger', @levels['warn'],
58
- 'warning message', false)
56
+ event = Logging::LogEvent.new('TestLogger', @levels['warn'],
57
+ 'warning message', false)
59
58
 
60
59
  flexmock(@appender).should_receive(:system => true).twice.with(
61
60
  @growl % ['WARN - Test', 'warning message', 0])
@@ -108,8 +107,8 @@ module TestAppenders
108
107
 
109
108
  def test_disabling
110
109
  @appender.instance_variable_set(:@coalesce, false)
111
- event = ::Logging::LogEvent.new('TestLogger', @levels['warn'],
112
- 'warning message', false)
110
+ event = Logging::LogEvent.new('TestLogger', @levels['warn'],
111
+ 'warning message', false)
113
112
 
114
113
  flexmock(@appender).should_receive(:system => false).once.with(
115
114
  @growl % ['WARN - Test', 'warning message', 0])
@@ -9,16 +9,15 @@ module TestAppenders
9
9
 
10
10
  def setup
11
11
  super
12
- ::Logging.init
13
- @levels = ::Logging::LEVELS
14
12
 
15
- @appender = ::Logging::Appenders::StringIo.new 'test_appender'
13
+ @appender = Logging.appenders.string_io('test_appender')
16
14
  @sio = @appender.sio
15
+ @levels = Logging::LEVELS
17
16
  end
18
17
 
19
18
  def test_append
20
- event = ::Logging::LogEvent.new('TestLogger', @levels['warn'],
21
- [1, 2, 3, 4], false)
19
+ event = Logging::LogEvent.new('TestLogger', @levels['warn'],
20
+ [1, 2, 3, 4], false)
22
21
  @appender.append event
23
22
  assert_equal " WARN TestLogger : <Array> #{[1, 2, 3, 4]}\n", readline
24
23
  assert_nil(readline)
@@ -36,14 +35,14 @@ module TestAppenders
36
35
  def test_append_error
37
36
  # setup an internal logger to capture error messages from the IO
38
37
  # appender
39
- log = Logging::Appenders::StringIo.new('__internal_io')
40
- Logging::Logger[Logging].add_appenders(log)
41
- Logging::Logger[Logging].level = 'all'
38
+ log = Logging.appenders.string_io('__internal_io')
39
+ Logging.logger[Logging].add_appenders(log)
40
+ Logging.logger[Logging].level = 'all'
42
41
 
43
42
  # close the string IO object so we get an error
44
43
  @sio.close
45
- event = ::Logging::LogEvent.new('TestLogger', @levels['warn'],
46
- [1, 2, 3, 4], false)
44
+ event = Logging::LogEvent.new('TestLogger', @levels['warn'],
45
+ [1, 2, 3, 4], false)
47
46
  @appender.append event
48
47
 
49
48
  assert_equal "INFO Logging : appender \"test_appender\" has been disabled", log.readline.strip
@@ -62,7 +61,7 @@ module TestAppenders
62
61
  assert_equal true, @appender.closed?
63
62
 
64
63
  [STDIN, STDERR, STDOUT].each do |io|
65
- @appender = ::Logging::Appenders::IO.new 'test', io
64
+ @appender = Logging.appenders.io('test', io)
66
65
  @appender.close
67
66
  assert_equal false, io.closed?
68
67
  assert_equal true, @appender.closed?
@@ -87,9 +86,9 @@ module TestAppenders
87
86
  def test_concat_error
88
87
  # setup an internal logger to capture error messages from the IO
89
88
  # appender
90
- log = Logging::Appenders::StringIo.new('__internal_io')
91
- Logging::Logger[Logging].add_appenders(log)
92
- Logging::Logger[Logging].level = 'all'
89
+ log = Logging.appenders.string_io('__internal_io')
90
+ Logging.logger[Logging].add_appenders(log)
91
+ Logging.logger[Logging].level = 'all'
93
92
 
94
93
  # close the string IO object so we get an error
95
94
  @sio.close
@@ -114,7 +113,7 @@ module TestAppenders
114
113
 
115
114
  def test_initialize
116
115
  assert_raise(EOFError) {@sio.readline}
117
- assert_raise(TypeError) {::Logging::Appenders::IO.new 'test', []}
116
+ assert_raise(TypeError) {Logging.appenders.io('test', [])}
118
117
  end
119
118
 
120
119
  private
@@ -11,7 +11,7 @@ module TestAppenders
11
11
 
12
12
  def setup
13
13
  super
14
- ::Logging.init
14
+ Logging.init
15
15
 
16
16
  @fn = File.join(TMP, 'test.log')
17
17
  @fn_fmt = File.join(TMP, 'test.%d.log')
@@ -22,7 +22,7 @@ module TestAppenders
22
22
  assert_equal [], Dir.glob(@glob)
23
23
 
24
24
  # create a new appender
25
- ap = ::Logging::Appenders::RollingFile.new(NAME, :filename => @fn)
25
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn)
26
26
  assert File.exist?(@fn)
27
27
  assert_equal 0, File.size(@fn)
28
28
 
@@ -32,7 +32,7 @@ module TestAppenders
32
32
  cleanup
33
33
 
34
34
  # make sure we append to the current file (not truncate)
35
- ap = ::Logging::Appenders::RollingFile.new(NAME, :filename => @fn)
35
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn)
36
36
  assert_equal [@fn], Dir.glob(@glob)
37
37
  assert_equal 20, File.size(@fn)
38
38
 
@@ -43,8 +43,7 @@ module TestAppenders
43
43
 
44
44
  # setting the truncate option to true should roll the current log file
45
45
  # and create a new one
46
- ap = ::Logging::Appenders::RollingFile.new(NAME,
47
- :filename => @fn, :truncate => true)
46
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, :truncate => true)
48
47
 
49
48
  log1 = sprintf(@fn_fmt, 1)
50
49
  assert_equal [log1, @fn], Dir.glob(@glob).sort
@@ -67,8 +66,7 @@ module TestAppenders
67
66
  FileUtils.touch(@fn)
68
67
 
69
68
  # keep only five files
70
- ap = ::Logging::Appenders::RollingFile.new(NAME,
71
- :filename => @fn, :keep => 5)
69
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, :keep => 5)
72
70
 
73
71
  # we still have 13 files because we did not truncate the log file,
74
72
  # and hence, we did not roll all the log files
@@ -89,12 +87,10 @@ module TestAppenders
89
87
  assert_equal [], Dir.glob(@glob)
90
88
 
91
89
  assert_raise(ArgumentError) do
92
- ::Logging::Appenders::RollingFile.new(
93
- NAME, :filename => @fn, :age => 'bob')
90
+ Logging.appenders.rolling_file(NAME, :filename => @fn, :age => 'bob')
94
91
  end
95
92
 
96
- ap = ::Logging::Appenders::RollingFile.new(NAME,
97
- :filename => @fn, :age => 1)
93
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, :age => 1)
98
94
  ap << "random message\n"
99
95
  assert_equal 1, Dir.glob(@glob).length
100
96
 
@@ -103,8 +99,7 @@ module TestAppenders
103
99
  assert_equal 2, Dir.glob(@glob).length
104
100
 
105
101
  cleanup
106
- ap = ::Logging::Appenders::RollingFile.new(NAME,
107
- :filename => @fn, 'age' => 'daily')
102
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, 'age' => 'daily')
108
103
  ap << "random message\n"
109
104
  assert_equal 2, Dir.glob(@glob).length
110
105
 
@@ -118,8 +113,7 @@ module TestAppenders
118
113
  assert_equal 3, Dir.glob(@glob).length
119
114
 
120
115
  cleanup
121
- ap = ::Logging::Appenders::RollingFile.new(NAME,
122
- :filename => @fn, :age => 'weekly')
116
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, :age => 'weekly')
123
117
  ap << "random message\n"
124
118
  assert_equal 3, Dir.glob(@glob).length
125
119
 
@@ -131,8 +125,7 @@ module TestAppenders
131
125
  assert_equal 4, Dir.glob(@glob).length
132
126
 
133
127
  cleanup
134
- ap = ::Logging::Appenders::RollingFile.new(NAME,
135
- :filename => @fn, :age => 'monthly')
128
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, :age => 'monthly')
136
129
  ap << "random message\n"
137
130
  assert_equal 4, Dir.glob(@glob).length
138
131
 
@@ -147,8 +140,7 @@ module TestAppenders
147
140
  def test_size
148
141
  assert_equal [], Dir.glob(@glob)
149
142
 
150
- ap = ::Logging::Appenders::RollingFile.new(NAME,
151
- :filename => @fn, :size => 100)
143
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, :size => 100)
152
144
 
153
145
  ap << 'X' * 100; ap.flush
154
146
  assert_equal 1, Dir.glob(@glob).length
@@ -174,8 +166,7 @@ module TestAppenders
174
166
  def test_file_removed
175
167
  assert_equal [], Dir.glob(@glob)
176
168
 
177
- ap = ::Logging::Appenders::RollingFile.new(NAME,
178
- :filename => @fn, :size => 100)
169
+ ap = Logging.appenders.rolling_file(NAME, :filename => @fn, :size => 100)
179
170
 
180
171
  ap << 'X' * 100; ap.flush
181
172
  assert_equal 1, Dir.glob(@glob).length
@@ -194,9 +185,9 @@ module TestAppenders
194
185
 
195
186
  private
196
187
  def cleanup
197
- unless ::Logging::Appender[NAME].nil?
198
- ::Logging::Appender[NAME].close false
199
- ::Logging::Appender[NAME] = nil
188
+ unless Logging.appenders[NAME].nil?
189
+ Logging.appenders[NAME].close false
190
+ Logging.appenders[NAME] = nil
200
191
  end
201
192
  end
202
193
 
@@ -12,8 +12,8 @@ module TestAppenders
12
12
 
13
13
  def setup
14
14
  super
15
- ::Logging.init
16
- @levels = ::Logging::LEVELS
15
+ Logging.init
16
+ @levels = Logging::LEVELS
17
17
  @logopt = defined?(::Syslog::LOG_NDELAY) ?
18
18
  (::Syslog::LOG_PERROR | ::Syslog::LOG_NDELAY) :
19
19
  (::Syslog::LOG_PERROR)
@@ -30,8 +30,8 @@ module TestAppenders
30
30
  stderr[1].close
31
31
 
32
32
  appender = create_syslog
33
- event = ::Logging::LogEvent.new('TestLogger', @levels['info'],
34
- [1, 2, 3, 4], false)
33
+ event = Logging::LogEvent.new('TestLogger', @levels['info'],
34
+ [1, 2, 3, 4], false)
35
35
  appender.append event
36
36
  event.level = @levels['debug']
37
37
  event.data = 'the big log message'
@@ -63,8 +63,8 @@ module TestAppenders
63
63
  appender = create_syslog
64
64
  appender.close false
65
65
 
66
- event = ::Logging::LogEvent.new('TestLogger', @levels['warn'],
67
- [1, 2, 3, 4], false)
66
+ event = Logging::LogEvent.new('TestLogger', @levels['warn'],
67
+ [1, 2, 3, 4], false)
68
68
  assert_raise(RuntimeError) {appender.append event}
69
69
  assert_equal true, appender.closed?
70
70
  end
@@ -149,7 +149,7 @@ module TestAppenders
149
149
  end
150
150
 
151
151
  def test_initialize_map
152
- appender = ::Logging::Appenders::Syslog.new(
152
+ appender = Logging.appenders.syslog(
153
153
  'syslog_test',
154
154
  :logopt => @logopt,
155
155
  :map => {
@@ -171,8 +171,8 @@ module TestAppenders
171
171
  private
172
172
 
173
173
  def create_syslog
174
- layout = ::Logging::Layouts::Pattern.new(:pattern => '%5l %c : %m')
175
- ::Logging::Appenders::Syslog.new(
174
+ layout = Logging.layouts.pattern(:pattern => '%5l %c : %m')
175
+ Logging.appenders.syslog(
176
176
  'syslog_test',
177
177
  :logopt => @logopt,
178
178
  :facility => ::Syslog::LOG_USER,
@@ -184,7 +184,7 @@ module TestAppenders
184
184
  syslog.instance_variable_get :@map
185
185
  end
186
186
 
187
- end # class TestIO
187
+ end # class TestSyslog
188
188
 
189
189
  end # module TestAppenders
190
190
  end # module TestLogging
@@ -9,14 +9,13 @@ module TestLayouts
9
9
 
10
10
  def setup
11
11
  super
12
- ::Logging.init
13
- @layout = ::Logging::Layouts::Basic.new
14
- @levels = ::Logging::LEVELS
12
+ @layout = Logging.layouts.basic({})
13
+ @levels = Logging::LEVELS
15
14
  end
16
15
 
17
16
  def test_format
18
- event = ::Logging::LogEvent.new( 'ArrayLogger', @levels['info'],
19
- 'log message', false)
17
+ event = Logging::LogEvent.new( 'ArrayLogger', @levels['info'],
18
+ 'log message', false)
20
19
  assert_equal " INFO ArrayLogger : log message\n", @layout.format(event)
21
20
 
22
21
  event.data = [1, 2, 3, 4]
@@ -0,0 +1,112 @@
1
+
2
+ require File.join(File.dirname(__FILE__), %w[.. setup])
3
+
4
+ module TestLogging
5
+ module TestLayouts
6
+
7
+ class TestJson < Test::Unit::TestCase
8
+ include LoggingTestCase
9
+
10
+ def setup
11
+ super
12
+ @layout = Logging.layouts.json({})
13
+ @levels = Logging::LEVELS
14
+ @date_fmt = '\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}'
15
+ Thread.current[:name] = nil
16
+ end
17
+
18
+ def test_initializer
19
+ assert_raise(ArgumentError) {
20
+ Logging.layouts.parseable.new :style => :foo
21
+ }
22
+ end
23
+
24
+ def test_format
25
+ fmt = %Q[\\{"timestamp":"#@date_fmt","level":"%s","logger":"%s","message":"%s"\\}\\n]
26
+
27
+ event = Logging::LogEvent.new('ArrayLogger', @levels['info'],
28
+ 'log message', false)
29
+ rgxp = Regexp.new(sprintf(fmt, 'INFO', 'ArrayLogger', 'log message'))
30
+ assert_match rgxp, @layout.format(event)
31
+
32
+ event.data = [1, 2, 3, 4]
33
+ rgxp = Regexp.new(sprintf(fmt, 'INFO', 'ArrayLogger',
34
+ Regexp.escape("<Array> #{[1,2,3,4]}")))
35
+ assert_match rgxp, @layout.format(event)
36
+
37
+ event.level = @levels['debug']
38
+ event.data = 'and another message'
39
+ rgxp = Regexp.new(sprintf(fmt, 'DEBUG', 'ArrayLogger',
40
+ 'and another message'))
41
+ assert_match rgxp, @layout.format(event)
42
+
43
+ event.logger = 'Test'
44
+ event.level = @levels['fatal']
45
+ event.data = Exception.new
46
+ rgxp = Regexp.new(sprintf(fmt, 'FATAL', 'Test', '<Exception> Exception'))
47
+ assert_match rgxp, @layout.format(event)
48
+ end
49
+
50
+ def test_items
51
+ assert_equal %w[timestamp level logger message], @layout.items
52
+ end
53
+
54
+ def test_items_eq
55
+ event = Logging::LogEvent.new('TestLogger', @levels['info'],
56
+ ['log message'], false)
57
+
58
+ @layout.items = %w[timestamp]
59
+ assert_equal %w[timestamp], @layout.items
60
+ assert_match %r/\{"timestamp":"#@date_fmt"\}\n/, @layout.format(event)
61
+
62
+ # 'foo' is not a recognized item
63
+ assert_raise(ArgumentError) {
64
+ @layout.items = %w[timestamp logger foo]
65
+ }
66
+ end
67
+
68
+ def test_items_all
69
+ event = Logging::LogEvent.new('TestLogger', @levels['info'],
70
+ 'log message', false)
71
+ event.instance_variable_set :@file, 'test_file.rb'
72
+ event.instance_variable_set :@line, 123
73
+ event.instance_variable_set :@method, 'method_name'
74
+
75
+ @layout.items = %w[logger]
76
+ assert_equal %Q[{"logger":"TestLogger"}\n], @layout.format(event)
77
+
78
+ @layout.items = %w[file]
79
+ assert_equal %Q[{"file":"test_file.rb"}\n], @layout.format(event)
80
+
81
+ @layout.items = %w[level]
82
+ assert_equal %Q[{"level":"INFO"}\n], @layout.format(event)
83
+
84
+ @layout.items = %w[line]
85
+ assert_equal %Q[{"line":123}\n], @layout.format(event)
86
+
87
+ @layout.items = %w[message]
88
+ assert_equal %Q[{"message":"log message"}\n], @layout.format(event)
89
+
90
+ @layout.items = %w[method]
91
+ assert_equal %Q[{"method":"method_name"}\n], @layout.format(event)
92
+
93
+ @layout.items = %w[pid]
94
+ assert_match %r/\A\{"pid":\d+\}\n\z/, @layout.format(event)
95
+
96
+ @layout.items = %w[millis]
97
+ assert_match %r/\A\{"millis":\d+\}\n\z/, @layout.format(event)
98
+
99
+ @layout.items = %w[thread_id]
100
+ assert_match %r/\A\{"thread_id":-?\d+\}\n\z/, @layout.format(event)
101
+
102
+ @layout.items = %w[thread]
103
+ assert_equal %Q[{"thread":null}\n], @layout.format(event)
104
+ Thread.current[:name] = "Main"
105
+ assert_equal %Q[{"thread":"Main"}\n], @layout.format(event)
106
+ end
107
+
108
+ end # class TestJson
109
+ end # module TestLayouts
110
+ end # module TestLogging
111
+
112
+ # EOF