TwP-logging 0.9.8 → 0.9.8.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.
@@ -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