log4r 1.1.9 → 1.1.10
Sign up to get free protection for your applications and to get access to all the features.
- data/examples/log4r_yaml.yaml +0 -0
- data/examples/yaml.rb +4 -4
- data/lib/log4r.rb +1 -4
- data/lib/log4r/formatter/formatter.rb +1 -1
- data/lib/log4r/formatter/log4jxmlformatter.rb +6 -2
- data/lib/log4r/outputter/fileoutputter.rb +1 -1
- data/lib/log4r/outputter/scribeoutputter.rb +37 -0
- data/lib/log4r/outputter/udpoutputter.rb +2 -2
- data/lib/log4r/rdoc/log4jxmlformatter +21 -0
- data/lib/log4r/rdoc/scribeoutputter +16 -0
- data/lib/log4r/version.rb +4 -0
- data/lib/log4r/yamlconfigurator.rb +24 -22
- data/tests/testGDC.rb +3 -5
- data/tests/testMDC.rb +5 -7
- data/tests/testNDC.rb +3 -5
- data/tests/test_helper.rb +12 -0
- data/tests/testall.rb +1 -1
- data/tests/testbase.rb +8 -9
- data/tests/testchainsaw.rb +1 -7
- data/tests/testcustom.rb +21 -18
- data/tests/testformatter.rb +7 -3
- data/tests/testlogger.rb +16 -12
- data/tests/testoutputter.rb +22 -11
- data/tests/testpatternformatter.rb +8 -10
- data/tests/testthreads.rb +9 -13
- data/tests/testxmlconf.rb +7 -4
- data/tests/testyaml.rb +39 -0
- data/tests/testyaml_arrays.yaml +25 -0
- data/tests/testyaml_injection.yaml +22 -0
- metadata +70 -23
- data/INSTALL +0 -11
- data/LICENSE +0 -90
- data/LICENSE.LGPLv3 +0 -165
- data/README +0 -94
- data/Rakefile +0 -74
- data/TODO +0 -2
data/tests/testoutputter.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require "log4r"
|
4
|
-
include Log4r
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
5
3
|
|
4
|
+
class TestOutputter < TestCase
|
5
|
+
include Log4r
|
6
6
|
|
7
|
-
class TestOutputter < Test::Unit::TestCase
|
8
7
|
def test_validation
|
9
8
|
assert_raise(ArgumentError) { Outputter.new }
|
10
9
|
assert_raise(ArgumentError) { Outputter.new 'fonda', :level=>-10}
|
@@ -55,13 +54,13 @@ class TestOutputter < Test::Unit::TestCase
|
|
55
54
|
assert_raise(TypeError) { o.formatter = "bogus" }
|
56
55
|
assert_raise(TypeError) { o.formatter = -3 }
|
57
56
|
# the formatter should be preserved
|
58
|
-
assert(o.formatter.class == Formatter)
|
57
|
+
assert(o.formatter.class == Formatter)
|
59
58
|
end
|
60
59
|
def test_file
|
61
60
|
assert_raise(TypeError) { FileOutputter.new 'f' }
|
62
61
|
assert_raise(TypeError) { FileOutputter.new('fa', :filename => DEBUG) }
|
63
62
|
assert_raise(TypeError) { FileOutputter.new('fo', :filename => nil) }
|
64
|
-
assert_nothing_raised {
|
63
|
+
assert_nothing_raised {
|
65
64
|
FileOutputter.new('fi', :filename => './junk/tmp')
|
66
65
|
FileOutputter.new('fum', :filename=>'./junk/tmp', :trunc => "true")
|
67
66
|
}
|
@@ -80,11 +79,11 @@ class TestOutputter < Test::Unit::TestCase
|
|
80
79
|
for mname in LNAMES
|
81
80
|
next if mname == 'OFF' || mname == 'ALL'
|
82
81
|
assert_respond_to(o, mname.downcase.to_sym, "Test respond to #{mname.to_s}")
|
83
|
-
end
|
82
|
+
end
|
84
83
|
return # cuz the rest is borked
|
85
84
|
# we rely on BasicFormatter's inability to reference a nil Logger to test
|
86
85
|
# the log methods. Everything from WARN to FATAL should choke.
|
87
|
-
event = LogEvent.new(nil, nil, nil, nil)
|
86
|
+
event = LogEvent.new(nil, nil, nil, nil)
|
88
87
|
assert_nothing_raised { o.debug event }
|
89
88
|
assert_nothing_raised { o.info event }
|
90
89
|
assert_raise(NameError) { o.warn event }
|
@@ -94,7 +93,7 @@ class TestOutputter < Test::Unit::TestCase
|
|
94
93
|
o.level = ERROR
|
95
94
|
assert_nothing_raised { o.debug event}
|
96
95
|
assert_nothing_raised { o.info event}
|
97
|
-
assert_nothing_raised { o.warn event}
|
96
|
+
assert_nothing_raised { o.warn event}
|
98
97
|
assert_raise(NameError) { o.error event}
|
99
98
|
assert_raise(NameError) { o.fatal event}
|
100
99
|
end
|
@@ -113,6 +112,18 @@ class TestOutputter < Test::Unit::TestCase
|
|
113
112
|
assert_nothing_raised { o.info event}
|
114
113
|
assert_nothing_raised { o.fatal event}
|
115
114
|
end
|
115
|
+
if defined?( Encoding )
|
116
|
+
# tests that files are opened in binary mode
|
117
|
+
def test_file_encoding
|
118
|
+
Encoding.default_internal = Encoding::UTF_8
|
119
|
+
File.open( './junk/tmp2', 'w' ) { |f| f.write( 'scheiß encoding' ) }
|
120
|
+
fenc = FileOutputter.new('fenc', :filename => './junk/tmp2')
|
121
|
+
event = LogEvent.new(1, Logger.root, nil, 'scheiß encoding'.force_encoding('ASCII-8BIT'))
|
122
|
+
assert_nothing_raised(Encoding::UndefinedConversionError) do
|
123
|
+
fenc.debug event
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
116
127
|
def broken_test_threading
|
117
128
|
class << self
|
118
129
|
def log_work
|
@@ -129,4 +140,4 @@ class TestOutputter < Test::Unit::TestCase
|
|
129
140
|
ts = Thread.new(log_thread_start)
|
130
141
|
ts.join
|
131
142
|
end
|
132
|
-
end
|
143
|
+
end
|
@@ -1,16 +1,14 @@
|
|
1
|
-
|
2
|
-
require "test/unit"
|
3
|
-
require "log4r"
|
4
|
-
include Log4r
|
1
|
+
require 'test_helper'
|
5
2
|
|
3
|
+
class TestPatternFormatter < TestCase
|
4
|
+
include Log4r
|
6
5
|
|
7
|
-
class TestPatternFormatter < Test::Unit::TestCase
|
8
6
|
def test_pattern
|
9
7
|
l = Logger.new 'test::this::that'
|
10
8
|
l.trace = true
|
11
|
-
o = StdoutOutputter.new 'test'
|
9
|
+
o = StdoutOutputter.new 'test'
|
12
10
|
l.add o
|
13
|
-
assert_nothing_raised {
|
11
|
+
assert_nothing_raised {
|
14
12
|
f = PatternFormatter.new :pattern=> "'%t' T-'%T' %d %6l [%C]%c %% %-40.30M"
|
15
13
|
#:date_pattern=> "%Y"
|
16
14
|
#:date_method => :usec
|
@@ -28,7 +26,7 @@ class TestPatternFormatter < Test::Unit::TestCase
|
|
28
26
|
def test_ndc
|
29
27
|
l = Logger.new 'test::this::that::other'
|
30
28
|
l.trace = true
|
31
|
-
o = StdoutOutputter.new 'testy'
|
29
|
+
o = StdoutOutputter.new 'testy'
|
32
30
|
l.add o
|
33
31
|
f = PatternFormatter.new :pattern=> "%d %6l [%C]%c {%x} %% %-40.30M"
|
34
32
|
#:date_pattern=> "%Y"
|
@@ -49,7 +47,7 @@ class TestPatternFormatter < Test::Unit::TestCase
|
|
49
47
|
def test_gdc
|
50
48
|
l = Logger.new 'test::this::that::other'
|
51
49
|
l.trace = true
|
52
|
-
o = StdoutOutputter.new 'testy'
|
50
|
+
o = StdoutOutputter.new 'testy'
|
53
51
|
l.add o
|
54
52
|
f = PatternFormatter.new :pattern=> "%d %6l [%C]%c {%g} %% %-40.30M"
|
55
53
|
#:date_pattern=> "%Y"
|
@@ -64,7 +62,7 @@ class TestPatternFormatter < Test::Unit::TestCase
|
|
64
62
|
def test_mdc
|
65
63
|
l = Logger.new 'test::this::that::other'
|
66
64
|
l.trace = true
|
67
|
-
o = StdoutOutputter.new 'testy'
|
65
|
+
o = StdoutOutputter.new 'testy'
|
68
66
|
l.add o
|
69
67
|
f = PatternFormatter.new :pattern=> "%d %6l [%C]%c {%X{user}} %% %-40.30M"
|
70
68
|
#:date_pattern=> "%Y"
|
data/tests/testthreads.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# $Id$
|
2
2
|
# Test guts sent in by chetreddy bug #27184
|
3
|
-
#
|
3
|
+
#
|
4
4
|
# Note: this test won't always catch a threading problem, as it
|
5
5
|
# relies on a brute force approach. NUM_THREADS can be increased
|
6
6
|
# to stress the system longer and therefore increasing the chance
|
@@ -8,14 +8,10 @@
|
|
8
8
|
# test.
|
9
9
|
#
|
10
10
|
|
11
|
+
require 'test_helper'
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
require "test/unit"
|
15
|
-
require 'log4r'
|
16
|
-
include Log4r
|
17
|
-
|
18
|
-
class TestThreads < Test::Unit::TestCase
|
13
|
+
class TestThreads < TestCase
|
14
|
+
include Log4r
|
19
15
|
|
20
16
|
NUMTHREADS = 1000
|
21
17
|
|
@@ -24,11 +20,11 @@ class TestThreads < Test::Unit::TestCase
|
|
24
20
|
assert_nothing_raised do
|
25
21
|
(0..NUMTHREADS).map do |i|
|
26
22
|
Thread.new do
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
23
|
+
Thread.current[:logger] = Log4r::Logger.new "Hello #{i}"
|
24
|
+
Thread.current[:logger].outputters = [StdoutOutputter.new("log4r#{i}")]
|
25
|
+
Thread.current[:logger].outputters.each { |j| j.flush }
|
26
|
+
Thread.current.exit()
|
27
|
+
end
|
32
28
|
end.each do |thr| thr.join end
|
33
29
|
end
|
34
30
|
end
|
data/tests/testxmlconf.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'test_helper'
|
1
2
|
|
2
3
|
One=<<-EOX
|
3
4
|
<log4r_config><pre_config><custom_levels> Foo </custom_levels>
|
@@ -14,28 +15,30 @@ EOX
|
|
14
15
|
|
15
16
|
# must be run independently
|
16
17
|
class TestXmlConf < TestCase
|
18
|
+
include Log4r
|
19
|
+
|
17
20
|
def test_load1
|
18
21
|
Configurator.load_xml_string(One)
|
19
|
-
|
22
|
+
assert_nothing_raised{
|
20
23
|
assert(Foo == 1)
|
21
24
|
assert(Logger.global.level == ALL)
|
22
25
|
}
|
23
26
|
end
|
24
27
|
def test_load2
|
25
28
|
Configurator.load_xml_string(Two)
|
26
|
-
|
29
|
+
assert_nothing_raised{
|
27
30
|
assert(Logger.global.level == DEBUG)
|
28
31
|
}
|
29
32
|
end
|
30
33
|
def test_load3
|
31
34
|
Configurator.load_xml_string(Three)
|
32
|
-
|
35
|
+
assert_nothing_raised{
|
33
36
|
assert(Foo == 1)
|
34
37
|
assert(Logger.global.level == Foo)
|
35
38
|
}
|
36
39
|
end
|
37
40
|
def test_load4
|
38
|
-
|
41
|
+
assert_nothing_raised {
|
39
42
|
Configurator['logpath'] = '.'
|
40
43
|
Configurator.load_xml_file "xml/testconf.xml"
|
41
44
|
a = Logger['first::second']
|
data/tests/testyaml.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# Define a custom outputter that allows arrays in configuration hash
|
4
|
+
module Log4r
|
5
|
+
class TestYamlOutputter < Outputter
|
6
|
+
# expose array parameter
|
7
|
+
attr_reader :array_param
|
8
|
+
|
9
|
+
def initialize(name, hash = {})
|
10
|
+
@array_param = hash['array_param']
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
class TestYaml < TestCase
|
17
|
+
include Log4r
|
18
|
+
|
19
|
+
def setup
|
20
|
+
@cfg = YamlConfigurator # shorthand
|
21
|
+
@cfg['CUSTOM_DOMAIN'] = 'bar.com'
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_injection
|
25
|
+
assert_nothing_raised("Exception injected") do
|
26
|
+
@cfg.load_yaml_file(File.join(File.dirname(__FILE__),'testyaml_injection.yaml'))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_arrays
|
31
|
+
assert_nothing_raised("Parser couldn't handle arrays in YAML") do
|
32
|
+
@cfg.load_yaml_file(File.join(File.dirname(__FILE__),'testyaml_arrays.yaml'))
|
33
|
+
end
|
34
|
+
log = Logger['mylogger']
|
35
|
+
assert_instance_of(Array, log.outputters.first.array_param, 'Array not loaded properly from YAML')
|
36
|
+
assert_equal('wilma@bar.com', log.outputters.first.array_param[2], '#{}-style parameter interpolation doesn\'t work properly in arrays')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
log4r_config:
|
2
|
+
|
3
|
+
# define all loggers ...
|
4
|
+
loggers:
|
5
|
+
- name : mylogger
|
6
|
+
level : INFO
|
7
|
+
additive : 'false'
|
8
|
+
trace : 'false'
|
9
|
+
outputters:
|
10
|
+
- testyaml
|
11
|
+
|
12
|
+
# define all outputters (incl. formatters)
|
13
|
+
outputters:
|
14
|
+
- type : TestYamlOutputter
|
15
|
+
name : testyaml
|
16
|
+
level : INFO
|
17
|
+
array_param:
|
18
|
+
- fred@foo.com
|
19
|
+
- barney@foo.com
|
20
|
+
- 'wilma@#{CUSTOM_DOMAIN}'
|
21
|
+
formatter:
|
22
|
+
date_pattern: '%y%m%d %H:%M:%S'
|
23
|
+
pattern : '%d %l: %m '
|
24
|
+
type : PatternFormatter
|
25
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
log4r_config:
|
2
|
+
|
3
|
+
# define all loggers ...
|
4
|
+
loggers:
|
5
|
+
- name : mylogger
|
6
|
+
level : INFO
|
7
|
+
additive : 'false'
|
8
|
+
trace : 'false'
|
9
|
+
outputters:
|
10
|
+
- stderr
|
11
|
+
|
12
|
+
# define all outputters (incl. formatters)
|
13
|
+
outputters:
|
14
|
+
- type : StderrOutputter
|
15
|
+
name : stderr
|
16
|
+
level : INFO
|
17
|
+
crash : "'; raise Exception #"
|
18
|
+
formatter:
|
19
|
+
date_pattern: '%y%m%d %H:%M:%S'
|
20
|
+
pattern : '%d %l: %m '
|
21
|
+
type : PatternFormatter
|
22
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: log4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 10
|
10
|
+
version: 1.1.10
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Colby Gutierrez-Kraybill
|
@@ -15,27 +15,49 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
date: 2012-01-02 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: bundler
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 23
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 0
|
32
|
+
- 0
|
33
|
+
version: 1.0.0
|
34
|
+
type: :development
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 49
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
- 8
|
48
|
+
- 7
|
49
|
+
version: 0.8.7
|
50
|
+
type: :development
|
51
|
+
version_requirements: *id002
|
22
52
|
description: "See also: http://logging.apache.org/log4j"
|
23
53
|
email: colby@astro.berkeley.edu
|
24
54
|
executables: []
|
25
55
|
|
26
56
|
extensions: []
|
27
57
|
|
28
|
-
extra_rdoc_files:
|
29
|
-
|
30
|
-
- LICENSE
|
31
|
-
- TODO
|
58
|
+
extra_rdoc_files: []
|
59
|
+
|
32
60
|
files:
|
33
|
-
- LICENSE
|
34
|
-
- LICENSE.LGPLv3
|
35
|
-
- README
|
36
|
-
- INSTALL
|
37
|
-
- Rakefile
|
38
|
-
- TODO
|
39
61
|
- doc/content/contact.html
|
40
62
|
- doc/content/contribute.html
|
41
63
|
- doc/content/index.html
|
@@ -95,6 +117,7 @@ files:
|
|
95
117
|
- lib/log4r/outputter/outputterfactory.rb
|
96
118
|
- lib/log4r/outputter/remoteoutputter.rb
|
97
119
|
- lib/log4r/outputter/rollingfileoutputter.rb
|
120
|
+
- lib/log4r/outputter/scribeoutputter.rb
|
98
121
|
- lib/log4r/outputter/staticoutputter.rb
|
99
122
|
- lib/log4r/outputter/syslogoutputter.rb
|
100
123
|
- lib/log4r/outputter/udpoutputter.rb
|
@@ -102,6 +125,7 @@ files:
|
|
102
125
|
- lib/log4r/rdoc/emailoutputter
|
103
126
|
- lib/log4r/rdoc/formatter
|
104
127
|
- lib/log4r/rdoc/GDC
|
128
|
+
- lib/log4r/rdoc/log4jxmlformatter
|
105
129
|
- lib/log4r/rdoc/log4r
|
106
130
|
- lib/log4r/rdoc/logger
|
107
131
|
- lib/log4r/rdoc/logserver
|
@@ -109,14 +133,17 @@ files:
|
|
109
133
|
- lib/log4r/rdoc/NDC
|
110
134
|
- lib/log4r/rdoc/outputter
|
111
135
|
- lib/log4r/rdoc/patternformatter
|
136
|
+
- lib/log4r/rdoc/scribeoutputter
|
112
137
|
- lib/log4r/rdoc/syslogoutputter
|
113
138
|
- lib/log4r/rdoc/win32eventoutputter
|
114
139
|
- lib/log4r/rdoc/yamlconfigurator
|
115
140
|
- lib/log4r/repository.rb
|
116
141
|
- lib/log4r/staticlogger.rb
|
142
|
+
- lib/log4r/version.rb
|
117
143
|
- lib/log4r/yamlconfigurator.rb
|
118
144
|
- lib/log4r.rb
|
119
145
|
- tests/README
|
146
|
+
- tests/test_helper.rb
|
120
147
|
- tests/testall.rb
|
121
148
|
- tests/testbase.rb
|
122
149
|
- tests/testchainsaw.rb
|
@@ -131,7 +158,9 @@ files:
|
|
131
158
|
- tests/testpatternformatter.rb
|
132
159
|
- tests/testthreads.rb
|
133
160
|
- tests/testxmlconf.rb
|
134
|
-
|
161
|
+
- tests/testyaml.rb
|
162
|
+
- tests/testyaml_arrays.yaml
|
163
|
+
- tests/testyaml_injection.yaml
|
135
164
|
homepage: http://log4r.rubyforge.org
|
136
165
|
licenses: []
|
137
166
|
|
@@ -160,10 +189,28 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
189
|
version: "0"
|
161
190
|
requirements: []
|
162
191
|
|
163
|
-
rubyforge_project:
|
164
|
-
rubygems_version: 1.
|
192
|
+
rubyforge_project:
|
193
|
+
rubygems_version: 1.8.8
|
165
194
|
signing_key:
|
166
195
|
specification_version: 3
|
167
196
|
summary: Log4r, logging framework for ruby
|
168
|
-
test_files:
|
169
|
-
|
197
|
+
test_files:
|
198
|
+
- tests/README
|
199
|
+
- tests/test_helper.rb
|
200
|
+
- tests/testall.rb
|
201
|
+
- tests/testbase.rb
|
202
|
+
- tests/testchainsaw.rb
|
203
|
+
- tests/testconf.xml
|
204
|
+
- tests/testcustom.rb
|
205
|
+
- tests/testformatter.rb
|
206
|
+
- tests/testGDC.rb
|
207
|
+
- tests/testlogger.rb
|
208
|
+
- tests/testMDC.rb
|
209
|
+
- tests/testNDC.rb
|
210
|
+
- tests/testoutputter.rb
|
211
|
+
- tests/testpatternformatter.rb
|
212
|
+
- tests/testthreads.rb
|
213
|
+
- tests/testxmlconf.rb
|
214
|
+
- tests/testyaml.rb
|
215
|
+
- tests/testyaml_arrays.yaml
|
216
|
+
- tests/testyaml_injection.yaml
|