rjack-slf4j 1.5.11.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +42 -0
- data/Manifest.static +13 -0
- data/Manifest.txt +29 -0
- data/README.rdoc +70 -0
- data/Rakefile +88 -0
- data/assembly.xml +24 -0
- data/lib/rjack-slf4j/base.rb +42 -0
- data/lib/rjack-slf4j/jcl-over-slf4j-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/jcl-over-slf4j.rb +2 -0
- data/lib/rjack-slf4j/jcl.rb +2 -0
- data/lib/rjack-slf4j/jdk14.rb +2 -0
- data/lib/rjack-slf4j/jul-to-slf4j-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/jul-to-slf4j.rb +20 -0
- data/lib/rjack-slf4j/jul.rb +77 -0
- data/lib/rjack-slf4j/log4j-over-slf4j-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/log4j-over-slf4j.rb +2 -0
- data/lib/rjack-slf4j/log4j12.rb +2 -0
- data/lib/rjack-slf4j/mdc.rb +47 -0
- data/lib/rjack-slf4j/nop.rb +2 -0
- data/lib/rjack-slf4j/simple.rb +2 -0
- data/lib/rjack-slf4j/slf4j-api-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/slf4j-jcl-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/slf4j-jdk14-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/slf4j-log4j12-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/slf4j-nop-1.5.11.jar +0 -0
- data/lib/rjack-slf4j/slf4j-simple-1.5.11.jar +0 -0
- data/lib/rjack-slf4j.rb +265 -0
- data/pom.xml +104 -0
- data/test/test_slf4j.rb +146 -0
- metadata +107 -0
data/History.rdoc
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
=== 1.5.11.0 (2010-3-6)
|
2
|
+
* Upgraded to SLF4J 1.5.11
|
3
|
+
* Set gem platform to java
|
4
|
+
* SLF4J.ruby_to_java_logger_name renamed/aliased SLF4J.to_log_name
|
5
|
+
* Upgraded to tarpit ~> 1.2.0
|
6
|
+
|
7
|
+
=== 1.5.10.0 (2009-12-19)
|
8
|
+
* Upgraded to SLF4J 1.5.10
|
9
|
+
* Upgraded to tarpit-1.1.0 (gemcutter)
|
10
|
+
|
11
|
+
=== 1.5.8.1 (2009-10-10)
|
12
|
+
* Renamed gem rjack-slf4j and as module RJack::SLF4J (with ::SLF4J
|
13
|
+
alias kept for backward compatibility.)
|
14
|
+
* Use rjack-tarpit for build.
|
15
|
+
* Upgraded to SLF4J 1.5.8
|
16
|
+
* Added support for logging exceptions from ruby, with special
|
17
|
+
handling of NativeException#cause
|
18
|
+
* Added support for converting from ruby style "Module::Class" to java
|
19
|
+
"module.Class" name in SLF4J::Logger.new
|
20
|
+
* Added SLF4J::MDC (Mapped Diagnostic Context) support module
|
21
|
+
* Added Logger.java_logger access
|
22
|
+
|
23
|
+
=== 1.5.6.3 (2009-4-25)
|
24
|
+
* Added SLF4J::JUL for controlling java.util.logging, including
|
25
|
+
JUL.replace_root_handlers which removes all existing handlers and
|
26
|
+
add SLF4JBridgeHandler for exclusive routing to SLF4J for use with
|
27
|
+
'jul-to-slf4j'.
|
28
|
+
* Added require 'slf4j' to each adapter loader.
|
29
|
+
* Use rdoc 2.4.3 and hoe 1.12.2 for build.
|
30
|
+
|
31
|
+
=== 1.5.6.2 (2009-4-4)
|
32
|
+
* Fixed previously lost rdoc due to base vs slf4j.rb manifest order.
|
33
|
+
|
34
|
+
=== 1.5.6.1 (2008-12-6)
|
35
|
+
* Upgraded to SLF4J 1.5.6
|
36
|
+
* SLF4JBase -rename-> SLF4J
|
37
|
+
|
38
|
+
=== 1.5.5.1 (2008-11-1)
|
39
|
+
* Upgraded to SLF4J 1.5.5
|
40
|
+
|
41
|
+
=== 1.5.3.1 (2008-10-8)
|
42
|
+
* Initial release based on SLF4J 1.5.3
|
data/Manifest.static
ADDED
data/Manifest.txt
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
Manifest.static
|
2
|
+
Manifest.txt
|
3
|
+
README.rdoc
|
4
|
+
History.rdoc
|
5
|
+
Rakefile
|
6
|
+
pom.xml
|
7
|
+
assembly.xml
|
8
|
+
lib/rjack-slf4j/base.rb
|
9
|
+
lib/rjack-slf4j.rb
|
10
|
+
lib/rjack-slf4j/jul-to-slf4j.rb
|
11
|
+
lib/rjack-slf4j/jul.rb
|
12
|
+
lib/rjack-slf4j/mdc.rb
|
13
|
+
test/test_slf4j.rb
|
14
|
+
lib/rjack-slf4j/jcl-over-slf4j.rb
|
15
|
+
lib/rjack-slf4j/jcl.rb
|
16
|
+
lib/rjack-slf4j/jdk14.rb
|
17
|
+
lib/rjack-slf4j/log4j-over-slf4j.rb
|
18
|
+
lib/rjack-slf4j/log4j12.rb
|
19
|
+
lib/rjack-slf4j/nop.rb
|
20
|
+
lib/rjack-slf4j/simple.rb
|
21
|
+
lib/rjack-slf4j/jcl-over-slf4j-1.5.11.jar
|
22
|
+
lib/rjack-slf4j/jul-to-slf4j-1.5.11.jar
|
23
|
+
lib/rjack-slf4j/log4j-over-slf4j-1.5.11.jar
|
24
|
+
lib/rjack-slf4j/slf4j-api-1.5.11.jar
|
25
|
+
lib/rjack-slf4j/slf4j-jcl-1.5.11.jar
|
26
|
+
lib/rjack-slf4j/slf4j-jdk14-1.5.11.jar
|
27
|
+
lib/rjack-slf4j/slf4j-log4j12-1.5.11.jar
|
28
|
+
lib/rjack-slf4j/slf4j-nop-1.5.11.jar
|
29
|
+
lib/rjack-slf4j/slf4j-simple-1.5.11.jar
|
data/README.rdoc
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
= rjack-slf4j
|
2
|
+
|
3
|
+
* http://rjack.rubyforge.org
|
4
|
+
* http://rubyforge.org/projects/rjack
|
5
|
+
|
6
|
+
== Description
|
7
|
+
|
8
|
+
A JRuby adaption and gem packaging of the
|
9
|
+
{Simple Logging Facade for Java}[http://www.slf4j.org/].
|
10
|
+
Provides all jar dependencies and a Ruby Logger compatible
|
11
|
+
facade.
|
12
|
+
|
13
|
+
SLF4J is a java logging abstraction and set of adapters to various
|
14
|
+
concrete logging implementations and legacy logging APIs. The slf4j
|
15
|
+
gem adds a ruby core Logger compatible facade to SLF4J, and makes any
|
16
|
+
needed adapters available to JRuby applications. This makes it
|
17
|
+
possible to unify and control logging output of both java and ruby
|
18
|
+
components in a JRuby application.
|
19
|
+
|
20
|
+
== Features
|
21
|
+
|
22
|
+
* The complete set of SLF4J jars with ruby 'require' based selection
|
23
|
+
of input and output adapters.
|
24
|
+
* A Ruby core Logger compatible SLF4J::Logger, allowing ruby code to
|
25
|
+
log through SLF4J.
|
26
|
+
|
27
|
+
== Synopsis
|
28
|
+
|
29
|
+
require 'rjack-slf4j'
|
30
|
+
require 'rjack-slf4j/simple'
|
31
|
+
|
32
|
+
log = RJack::SLF4J[ "my.app.logger" ]
|
33
|
+
log.info "Hello World!"
|
34
|
+
|
35
|
+
== License
|
36
|
+
|
37
|
+
=== rjack-slf4j gem
|
38
|
+
|
39
|
+
Copyright (c) 2008-2009 David Kellum
|
40
|
+
All rights reserved.
|
41
|
+
|
42
|
+
The SLF4J ruby wrapper and gem packaging is released under the same
|
43
|
+
license terms as the SLF4J java binaries, see below. Note that these
|
44
|
+
license terms are identical to the
|
45
|
+
{MIT License}[http://en.wikipedia.org/wiki/MIT_License] and deemed
|
46
|
+
compatible with GPL and the Apache Software License.
|
47
|
+
|
48
|
+
=== SLF4J (java)
|
49
|
+
|
50
|
+
Copyright (c) 2004-2008 QOS.ch
|
51
|
+
All rights reserved.
|
52
|
+
|
53
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
54
|
+
a copy of this software and associated documentation files (the
|
55
|
+
"Software"), to deal in the Software without restriction, including
|
56
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
57
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
58
|
+
permit persons to whom the Software is furnished to do so, subject to
|
59
|
+
the following conditions:
|
60
|
+
|
61
|
+
The above copyright notice and this permission notice shall be
|
62
|
+
included in all copies or substantial portions of the Software.
|
63
|
+
|
64
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
65
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
66
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
67
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
68
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
69
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
70
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#--
|
3
|
+
# Copyright (C) 2008-2009 David Kellum
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person
|
6
|
+
# obtaining a copy of this software and associated documentation files
|
7
|
+
# (the "Software"), to deal in the Software without restriction,
|
8
|
+
# including without limitation the rights to use, copy, modify, merge,
|
9
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
10
|
+
# and to permit persons to whom the Software is furnished to do so,
|
11
|
+
# subject to the following conditions:
|
12
|
+
#
|
13
|
+
# The above copyright notice and this permission notice shall be
|
14
|
+
# included in all copies or substantial portions of the Software.
|
15
|
+
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
20
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
21
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
22
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
23
|
+
# SOFTWARE.
|
24
|
+
#++
|
25
|
+
|
26
|
+
$LOAD_PATH << './lib'
|
27
|
+
require 'rjack-slf4j/base'
|
28
|
+
|
29
|
+
require 'rubygems'
|
30
|
+
gem 'rjack-tarpit', '~> 1.2.0'
|
31
|
+
require 'rjack-tarpit'
|
32
|
+
|
33
|
+
t = RJack::TarPit.new( 'rjack-slf4j', RJack::SLF4J::VERSION, :java_platform )
|
34
|
+
|
35
|
+
t.specify do |h|
|
36
|
+
h.developer( "David Kellum", "dek-oss@gravitext.com" )
|
37
|
+
h.rubyforge_name = "rjack"
|
38
|
+
h.remote_rdoc_dir = "slf4j"
|
39
|
+
end
|
40
|
+
|
41
|
+
loaders =
|
42
|
+
begin
|
43
|
+
l = RJack::SLF4J::ADAPTERS.flatten.compact
|
44
|
+
l.delete( "jul-to-slf4j" ) # exception: maintained as source
|
45
|
+
l
|
46
|
+
end
|
47
|
+
|
48
|
+
t.generated_files = loaders.map { |adp| "lib/#{t.name}/#{adp}.rb" }
|
49
|
+
|
50
|
+
t.jars =
|
51
|
+
begin
|
52
|
+
j = [ 'slf4j-api' ]
|
53
|
+
j += RJack::SLF4J::ADAPTERS.map { |i,o| [ i, "slf4j-#{o}" ] }.flatten.compact
|
54
|
+
j.map { |n| "#{n}-#{RJack::SLF4J::SLF4J_VERSION}.jar" }
|
55
|
+
end
|
56
|
+
|
57
|
+
file 'Manifest.txt' => [ "lib/#{t.name}/base.rb" ]
|
58
|
+
|
59
|
+
t.assembly_version = 1.0
|
60
|
+
|
61
|
+
task :check_pom_deps do
|
62
|
+
t.test_line_match( 'pom.xml',
|
63
|
+
%r[<version>#{RJack::SLF4J::SLF4J_VERSION}</version>] )
|
64
|
+
end
|
65
|
+
|
66
|
+
task :check_history_version do
|
67
|
+
t.test_line_match( 'History.rdoc', /^==/, / #{t.version} / )
|
68
|
+
end
|
69
|
+
task :check_history_date do
|
70
|
+
t.test_line_match( 'History.rdoc', /^==/, /\([0-9\-]+\)$/ )
|
71
|
+
end
|
72
|
+
|
73
|
+
task :gem => [ :check_pom_deps, :check_history_version ]
|
74
|
+
task :tag => [ :check_pom_deps, :check_history_version, :check_history_date ]
|
75
|
+
task :push => [ :check_history_date ]
|
76
|
+
|
77
|
+
t.define_tasks
|
78
|
+
|
79
|
+
loaders.each do |adapter|
|
80
|
+
file "lib/#{t.name}/#{adapter}.rb" => [ "lib/#{t.name}/base.rb", 'Rakefile' ] do
|
81
|
+
open( "lib/#{t.name}/#{adapter}.rb", 'w' ) do |out|
|
82
|
+
out.write <<END
|
83
|
+
require 'rjack-slf4j'
|
84
|
+
RJack::SLF4J.require_adapter( '#{adapter}' )
|
85
|
+
END
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
data/assembly.xml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<assembly>
|
2
|
+
<id>bin</id>
|
3
|
+
<formats>
|
4
|
+
<format>dir</format>
|
5
|
+
</formats>
|
6
|
+
<includeBaseDirectory>false</includeBaseDirectory>
|
7
|
+
<dependencySets>
|
8
|
+
<dependencySet>
|
9
|
+
<includes>
|
10
|
+
<include>org.slf4j:slf4j-api</include>
|
11
|
+
<include>org.slf4j:jcl-over-slf4j</include>
|
12
|
+
<include>org.slf4j:jul-to-slf4j</include>
|
13
|
+
<include>org.slf4j:log4j-over-slf4j</include>
|
14
|
+
<include>org.slf4j:slf4j-jcl</include>
|
15
|
+
<include>org.slf4j:slf4j-jdk14</include>
|
16
|
+
<include>org.slf4j:slf4j-log4j12</include>
|
17
|
+
<include>org.slf4j:slf4j-nop</include>
|
18
|
+
<include>org.slf4j:slf4j-simple</include>
|
19
|
+
</includes>
|
20
|
+
</dependencySet>
|
21
|
+
|
22
|
+
</dependencySets>
|
23
|
+
|
24
|
+
</assembly>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (C) 2008-2009 David Kellum
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person
|
5
|
+
# obtaining a copy of this software and associated documentation files
|
6
|
+
# (the "Software"), to deal in the Software without restriction,
|
7
|
+
# including without limitation the rights to use, copy, modify, merge,
|
8
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
9
|
+
# and to permit persons to whom the Software is furnished to do so,
|
10
|
+
# subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
19
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
20
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
21
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
# SOFTWARE.
|
23
|
+
#++
|
24
|
+
|
25
|
+
module RJack
|
26
|
+
module SLF4J
|
27
|
+
|
28
|
+
# SLF4J-java version
|
29
|
+
SLF4J_VERSION = '1.5.11'
|
30
|
+
# SLF4J gem version
|
31
|
+
VERSION = SLF4J_VERSION + '.0'
|
32
|
+
|
33
|
+
SLF4J_DIR = File.dirname(__FILE__) # :nodoc:
|
34
|
+
|
35
|
+
# :input :output (jar with slf4j- prefix)
|
36
|
+
ADAPTERS = [ [ "jul-to-slf4j", "jdk14" ],
|
37
|
+
[ "jcl-over-slf4j", "jcl" ],
|
38
|
+
[ "log4j-over-slf4j", "log4j12" ],
|
39
|
+
[ nil, "nop" ],
|
40
|
+
[ nil, "simple" ] ] # :nodoc:
|
41
|
+
end
|
42
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rjack-slf4j'
|
2
|
+
require 'rjack-slf4j/jul'
|
3
|
+
|
4
|
+
RJack::SLF4J.require_adapter( 'jul-to-slf4j' )
|
5
|
+
|
6
|
+
module RJack::SLF4J::JUL
|
7
|
+
|
8
|
+
# Replace any existing configured root java.util.Logger Handlers with
|
9
|
+
# the org.slf4j.bridge.SLF4JBridgeHandler
|
10
|
+
def self.replace_root_handlers
|
11
|
+
root_logger = root
|
12
|
+
root_logger.handlers.each do |handler|
|
13
|
+
root_logger.remove_handler( handler )
|
14
|
+
end
|
15
|
+
handler = Java::org.slf4j.bridge.SLF4JBridgeHandler.new
|
16
|
+
|
17
|
+
root_logger.add_handler( handler )
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (C) 2009 David Kellum
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person
|
5
|
+
# obtaining a copy of this software and associated documentation files
|
6
|
+
# (the "Software"), to deal in the Software without restriction,
|
7
|
+
# including without limitation the rights to use, copy, modify, merge,
|
8
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
9
|
+
# and to permit persons to whom the Software is furnished to do so,
|
10
|
+
# subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
19
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
20
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
21
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
# SOFTWARE.
|
23
|
+
#++
|
24
|
+
|
25
|
+
require 'rjack-slf4j'
|
26
|
+
require 'java'
|
27
|
+
|
28
|
+
# Utilities for finer grain control of the JDK java.util.logging
|
29
|
+
# (JUL). In particular, unlike other logging API's reimplemented by
|
30
|
+
# slf4j adapters, JUL log levels remain significant for enabling output
|
31
|
+
# or avoiding log message generation cycles. For a particular
|
32
|
+
# level to be output, both JUL and the destination SLF4J output adapter
|
33
|
+
# must enable it.
|
34
|
+
#
|
35
|
+
# == Usage
|
36
|
+
#
|
37
|
+
# Adjust JUL levels (in conjunction with 'slf4j/jul-to-slf4j' or
|
38
|
+
# 'slf4j/jdk14', see SLF4J.)
|
39
|
+
#
|
40
|
+
# require 'rjack-slf4j/jul'
|
41
|
+
# SLF4J::JUL[ "my.jul.logger" ].level = SLF4J::JUL::FINER
|
42
|
+
#
|
43
|
+
# Direct all output to SLF4J (output adapter != 'jdk14')
|
44
|
+
#
|
45
|
+
# require 'rjack-slf4j/jul-to-slf4j'
|
46
|
+
# RJack::SLF4J::JUL.replace_root_handlers
|
47
|
+
#
|
48
|
+
module RJack::SLF4J::JUL
|
49
|
+
LogManager = Java::java.util.logging.LogManager
|
50
|
+
Logger = Java::java.util.logging.Logger
|
51
|
+
Level = Java::java.util.logging.Level
|
52
|
+
|
53
|
+
SEVERE = Level::SEVERE
|
54
|
+
WARNING = Level::WARNING
|
55
|
+
INFO = Level::INFO
|
56
|
+
CONFIG = Level::CONFIG
|
57
|
+
FINE = Level::FINE
|
58
|
+
FINER = Level::FINER
|
59
|
+
FINEST = Level::FINEST
|
60
|
+
ALL = Level::ALL
|
61
|
+
|
62
|
+
# Global java.util.logging.LogManager reset: close any handlers and
|
63
|
+
# set root level to INFO.
|
64
|
+
def self.reset
|
65
|
+
LogManager.log_manager.reset
|
66
|
+
end
|
67
|
+
|
68
|
+
# Get java.util.logging.Logger by name (responds to level=, etc.)
|
69
|
+
def self.[]( name )
|
70
|
+
Logger.get_logger( name )
|
71
|
+
end
|
72
|
+
|
73
|
+
# Get the root logger (empty string name)
|
74
|
+
def self.root
|
75
|
+
Logger.get_logger( "" )
|
76
|
+
end
|
77
|
+
end
|
Binary file
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (C) 2008-2009 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You
|
6
|
+
# may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'rjack-slf4j'
|
18
|
+
|
19
|
+
module RJack::SLF4J
|
20
|
+
|
21
|
+
# Mapped Diagnostic Context support module
|
22
|
+
#
|
23
|
+
# Note that this optional module can only be loaded after a output
|
24
|
+
# adapter has been loaded. Otherwise the following output is
|
25
|
+
# printed and Exception will be thrown:
|
26
|
+
#
|
27
|
+
# SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
|
28
|
+
# SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
|
29
|
+
# java.lang.NoClassDefFoundError: org/slf4j/impl/StaticMDCBinder
|
30
|
+
#
|
31
|
+
module MDC
|
32
|
+
|
33
|
+
# Get value associated with key, or nil.
|
34
|
+
def self.[]( key )
|
35
|
+
org.slf4j.MDC::get( key.to_s )
|
36
|
+
end
|
37
|
+
|
38
|
+
# Associate val with key, or remove key is value is nil.
|
39
|
+
def self.[]=( key, val )
|
40
|
+
if val
|
41
|
+
org.slf4j.MDC::put( key.to_s, val.to_s )
|
42
|
+
else
|
43
|
+
org.slf4j.MDC::remove( key.to_s )
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/rjack-slf4j.rb
ADDED
@@ -0,0 +1,265 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (C) 2008-2009 David Kellum
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person
|
5
|
+
# obtaining a copy of this software and associated documentation files
|
6
|
+
# (the "Software"), to deal in the Software without restriction,
|
7
|
+
# including without limitation the rights to use, copy, modify, merge,
|
8
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
9
|
+
# and to permit persons to whom the Software is furnished to do so,
|
10
|
+
# subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
19
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
20
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
21
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
# SOFTWARE.
|
23
|
+
#++
|
24
|
+
|
25
|
+
require 'rjack-slf4j/base'
|
26
|
+
require 'java'
|
27
|
+
|
28
|
+
# Backward compatibility for top level ::SLF4J module
|
29
|
+
SLF4J = RJack::SLF4J
|
30
|
+
|
31
|
+
module RJack
|
32
|
+
|
33
|
+
# Wrapper and core Logger compatible adapter for the
|
34
|
+
# SLF4J[http://www.slf4j.org/] logging interface.
|
35
|
+
#
|
36
|
+
# == Usage
|
37
|
+
#
|
38
|
+
# require 'rjack-slf4j'
|
39
|
+
#
|
40
|
+
# log = RJack::SLF4J[ "my.app.logger" ]
|
41
|
+
# log.info "Hello World!"
|
42
|
+
#
|
43
|
+
# == Adapters
|
44
|
+
#
|
45
|
+
# An output adapter must be required before the first log call. All
|
46
|
+
# of the following output adapters are available via +require+ from
|
47
|
+
# the slf4j gem:
|
48
|
+
#
|
49
|
+
# require 'rjack-slf4j/jcl' # Output to Jakarta Commons Logging
|
50
|
+
# require 'rjack-slf4j/jdk14' # JDK java.util.logging (JUL)
|
51
|
+
# require 'rjack-slf4j/log4j12' # Log4j (provided elsewhere)
|
52
|
+
# require 'rjack-slf4j/nop' # NOP null logger (provided)
|
53
|
+
# require 'rjack-slf4j/simple' # Simple logger (provided)
|
54
|
+
#
|
55
|
+
# The rjack-logback[http://rjack.rubyforge.org/logback] gem may
|
56
|
+
# also be be used as the output adapter:
|
57
|
+
#
|
58
|
+
# require 'rjack-logback'
|
59
|
+
#
|
60
|
+
# The first loaded output adapter wins (as with multiple adapters on
|
61
|
+
# the classpath). A warning will be logged to "slf4j" if an attempt is
|
62
|
+
# made to require a second output adapter.
|
63
|
+
#
|
64
|
+
# The following input adapters will intercept JCL, java.util.logging
|
65
|
+
# (JUL), or log4j log output and direct it through SLF4J:
|
66
|
+
#
|
67
|
+
# require 'rjack-slf4j/jcl-over-slf4j' # Route Jakarta Commons Logging to SLF4J
|
68
|
+
# require 'rjack-slf4j/log4j-over-slf4j' # Log4j to SLF4J
|
69
|
+
#
|
70
|
+
# require 'rjack-slf4j/jul-to-slf4j' # JDK java.util.logging (JUL) to SLF4J
|
71
|
+
# RJack::SLF4J::JUL.replace_root_handlers # Special case setup for JUL
|
72
|
+
#
|
73
|
+
# Multiple input adapters may be require'd. However, a RuntimeError
|
74
|
+
# will be raised in the attempt to require both an output adapter and
|
75
|
+
# input adapter from/to the same interface, for example
|
76
|
+
# 'rjack-slf4j/jcl-over-slf4j' and 'rjack-slf4j/jcl', which would otherwise cause
|
77
|
+
# a circular logging loop (and stack overflow.)
|
78
|
+
#
|
79
|
+
# Adapter names match the corresponding SLF4J jars.
|
80
|
+
#
|
81
|
+
module SLF4J
|
82
|
+
|
83
|
+
# Require an adapter by name (add the jar to classpath)
|
84
|
+
# This is normally done via require 'slf4j/_name_'
|
85
|
+
def self.require_adapter( name )
|
86
|
+
row = ADAPTERS.assoc( name )
|
87
|
+
if row
|
88
|
+
name,ban = row
|
89
|
+
output = false
|
90
|
+
else
|
91
|
+
row = ADAPTERS.rassoc( name )
|
92
|
+
ban,name = row
|
93
|
+
output = true
|
94
|
+
end
|
95
|
+
|
96
|
+
if @@loaded[ ban ]
|
97
|
+
raise "Illegal attempt to load '#{name}' when '#{ban}' is loaded."
|
98
|
+
end
|
99
|
+
|
100
|
+
if output
|
101
|
+
if ! @@output_name.nil? && name != @@output_name
|
102
|
+
logger("slf4j").warn do
|
103
|
+
"Ignoring attempt to load #{name} after #{@@output_name} already loaded."
|
104
|
+
end
|
105
|
+
return
|
106
|
+
end
|
107
|
+
if java.lang.Thread::current_thread.context_class_loader != @@api_loader
|
108
|
+
$stderr.puts( "WARNING: Attempting to load #{name} in child class" +
|
109
|
+
" loader of slf4j-api.jar loader." )
|
110
|
+
end
|
111
|
+
require_jar( 'slf4j-' + name )
|
112
|
+
@@output_name = name
|
113
|
+
else
|
114
|
+
require_jar( name )
|
115
|
+
end
|
116
|
+
|
117
|
+
@@loaded[ name ] = true
|
118
|
+
end
|
119
|
+
|
120
|
+
def self.require_jar( name ) # :nodoc:
|
121
|
+
require File.join( SLF4J_DIR, "#{name}-#{ SLF4J_VERSION }.jar" )
|
122
|
+
end
|
123
|
+
|
124
|
+
require_jar 'slf4j-api'
|
125
|
+
|
126
|
+
@@api_loader = org.slf4j.ILoggerFactory.java_class.class_loader
|
127
|
+
@@loaded = {}
|
128
|
+
@@output_name = nil
|
129
|
+
|
130
|
+
# Output adapter name if one has been added, or nil.
|
131
|
+
def self.output_name
|
132
|
+
@@output_name
|
133
|
+
end
|
134
|
+
|
135
|
+
# SLF4J severity levels
|
136
|
+
LEVELS = %w{ trace debug info warn error }
|
137
|
+
|
138
|
+
# Return a java style class name, suitable as a logger name, from the
|
139
|
+
# given ruby class or module, i.e:
|
140
|
+
#
|
141
|
+
# to_log_name( Foo::Bar::Baz ) --> "foo.bar.Baz"
|
142
|
+
#
|
143
|
+
def self.to_log_name( clz )
|
144
|
+
clz.name.gsub( /::/, '.' ).gsub( /([^\.]+)\./ ) { |m| m.downcase }
|
145
|
+
end
|
146
|
+
|
147
|
+
class << self
|
148
|
+
alias ruby_to_java_logger_name to_log_name
|
149
|
+
end
|
150
|
+
|
151
|
+
# Logger compatible facade over org.slf4j.Logger
|
152
|
+
#
|
153
|
+
# === Generated Methods
|
154
|
+
#
|
155
|
+
# Corresponding methods are generated for each of the SLF4J levels:
|
156
|
+
#
|
157
|
+
# * trace
|
158
|
+
# * debug
|
159
|
+
# * info
|
160
|
+
# * warn
|
161
|
+
# * error
|
162
|
+
# * fatal (alias to error)
|
163
|
+
#
|
164
|
+
# These have the form (using _info_ as example):
|
165
|
+
#
|
166
|
+
# log = Logger.new( "name" )
|
167
|
+
# log.info? # Is this level enabled for logging?
|
168
|
+
# log.info( "message" ) # Log message
|
169
|
+
# log.info { "message" } # Execute block if enabled
|
170
|
+
# and log returned value
|
171
|
+
# log.info( "message", ex ) # Log message with exception message/stack trace
|
172
|
+
# log.info( ex ) { "message" } # Log message with exception message/stack trace
|
173
|
+
# log.info( ex ) # Log exception with default "Exception:" message
|
174
|
+
#
|
175
|
+
# Note that the exception variants are aware of JRuby's
|
176
|
+
# NativeException class (a wrapped java exception) and will log
|
177
|
+
# using the Java ex.cause in this case.
|
178
|
+
#
|
179
|
+
class Logger
|
180
|
+
attr_reader :name
|
181
|
+
|
182
|
+
# Create new or find existing Logger by name. If name is a Module (Class, etc.)
|
183
|
+
# then use SLF4J.to_log_name( name ) as the name
|
184
|
+
#
|
185
|
+
# Note that loggers are arranged in a hiearchy by dot '.' name
|
186
|
+
# notation using java package/class name conventions:
|
187
|
+
#
|
188
|
+
# * "pmodule"
|
189
|
+
# * "pmodule.cmodule."
|
190
|
+
# * "pmodule.cmodule.ClassName"
|
191
|
+
#
|
192
|
+
# Which enables hierarchical level setting and abbreviation in some output adapters.
|
193
|
+
#
|
194
|
+
def initialize( name )
|
195
|
+
@name = name.is_a?( Module ) ? SLF4J.to_log_name( name ) : name
|
196
|
+
@logger = org.slf4j.LoggerFactory.getLogger( @name )
|
197
|
+
end
|
198
|
+
|
199
|
+
# Return underlying org.slf4j.Logger
|
200
|
+
def java_logger
|
201
|
+
@logger
|
202
|
+
end
|
203
|
+
|
204
|
+
# Define logging methods for each level: debug(), error(), etc.
|
205
|
+
LEVELS.each do |lvl|
|
206
|
+
module_eval( %Q{
|
207
|
+
|
208
|
+
def #{lvl}?
|
209
|
+
@logger.is#{lvl.capitalize}Enabled
|
210
|
+
end
|
211
|
+
|
212
|
+
def #{lvl}( msg=nil, ex=nil )
|
213
|
+
if msg.is_a?( Exception ) && ex.nil?
|
214
|
+
msg, ex = "Exception:", msg
|
215
|
+
end
|
216
|
+
msg = yield if ( block_given? && #{lvl}? )
|
217
|
+
if msg
|
218
|
+
if ex
|
219
|
+
#{lvl}_ex( msg, ex )
|
220
|
+
else
|
221
|
+
@logger.#{lvl}( msg.to_s )
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
def #{lvl}_ex( msg, ex )
|
227
|
+
if ex.is_a?( NativeException )
|
228
|
+
@logger.#{lvl}( msg.to_s, ex.cause )
|
229
|
+
elsif #{lvl}?
|
230
|
+
log = msg.to_s
|
231
|
+
log << '\n'
|
232
|
+
log << ex.class.name << ': ' << ex.message << '\n'
|
233
|
+
ex.backtrace.each do |b|
|
234
|
+
log << '\t' << b << '\n'
|
235
|
+
end
|
236
|
+
@logger.#{lvl}( log )
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
} )
|
241
|
+
end
|
242
|
+
|
243
|
+
# Alias fatal to error for Logger compatibility
|
244
|
+
alias_method :fatal, :error
|
245
|
+
alias_method :fatal?, :error?
|
246
|
+
end
|
247
|
+
|
248
|
+
# Get Logger by name
|
249
|
+
def logger( name = self.class.name )
|
250
|
+
Logger.new( name )
|
251
|
+
end
|
252
|
+
module_function :logger
|
253
|
+
|
254
|
+
# Synonym for Logger.new( name )
|
255
|
+
def self.[]( name )
|
256
|
+
Logger.new( name )
|
257
|
+
end
|
258
|
+
|
259
|
+
# The ILoggerFactory instance if an output adapter has been loaded
|
260
|
+
def self.linked_factory
|
261
|
+
org.slf4j.LoggerFactory.getILoggerFactory
|
262
|
+
end
|
263
|
+
|
264
|
+
end
|
265
|
+
end
|
data/pom.xml
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
2
|
+
|
3
|
+
<modelVersion>4.0.0</modelVersion>
|
4
|
+
<groupId>rjack</groupId>
|
5
|
+
<artifactId>rjack-slf4j</artifactId>
|
6
|
+
<packaging>pom</packaging>
|
7
|
+
<version>1.0</version>
|
8
|
+
<name>SLF4J assembly</name>
|
9
|
+
|
10
|
+
<dependencies>
|
11
|
+
|
12
|
+
<dependency>
|
13
|
+
<groupId>org.slf4j</groupId>
|
14
|
+
<artifactId>slf4j-api</artifactId>
|
15
|
+
<version>1.5.11</version>
|
16
|
+
</dependency>
|
17
|
+
|
18
|
+
<dependency>
|
19
|
+
<groupId>org.slf4j</groupId>
|
20
|
+
<artifactId>jcl-over-slf4j</artifactId>
|
21
|
+
<version>1.5.11</version>
|
22
|
+
<scope>runtime</scope>
|
23
|
+
</dependency>
|
24
|
+
|
25
|
+
<dependency>
|
26
|
+
<groupId>org.slf4j</groupId>
|
27
|
+
<artifactId>jul-to-slf4j</artifactId>
|
28
|
+
<version>1.5.11</version>
|
29
|
+
<scope>runtime</scope>
|
30
|
+
</dependency>
|
31
|
+
|
32
|
+
<dependency>
|
33
|
+
<groupId>org.slf4j</groupId>
|
34
|
+
<artifactId>log4j-over-slf4j</artifactId>
|
35
|
+
<version>1.5.11</version>
|
36
|
+
<scope>runtime</scope>
|
37
|
+
</dependency>
|
38
|
+
|
39
|
+
<dependency>
|
40
|
+
<groupId>org.slf4j</groupId>
|
41
|
+
<artifactId>slf4j-jdk14</artifactId>
|
42
|
+
<version>1.5.11</version>
|
43
|
+
<scope>runtime</scope>
|
44
|
+
<optional>true</optional>
|
45
|
+
</dependency>
|
46
|
+
|
47
|
+
<dependency>
|
48
|
+
<groupId>org.slf4j</groupId>
|
49
|
+
<artifactId>slf4j-log4j12</artifactId>
|
50
|
+
<version>1.5.11</version>
|
51
|
+
<scope>runtime</scope>
|
52
|
+
<optional>true</optional>
|
53
|
+
</dependency>
|
54
|
+
|
55
|
+
<dependency>
|
56
|
+
<groupId>org.slf4j</groupId>
|
57
|
+
<artifactId>slf4j-jcl</artifactId>
|
58
|
+
<version>1.5.11</version>
|
59
|
+
<scope>runtime</scope>
|
60
|
+
<optional>true</optional>
|
61
|
+
</dependency>
|
62
|
+
|
63
|
+
<dependency>
|
64
|
+
<groupId>org.slf4j</groupId>
|
65
|
+
<artifactId>slf4j-simple</artifactId>
|
66
|
+
<version>1.5.11</version>
|
67
|
+
<scope>runtime</scope>
|
68
|
+
<optional>true</optional>
|
69
|
+
</dependency>
|
70
|
+
|
71
|
+
<dependency>
|
72
|
+
<groupId>org.slf4j</groupId>
|
73
|
+
<artifactId>slf4j-nop</artifactId>
|
74
|
+
<version>1.5.11</version>
|
75
|
+
<scope>runtime</scope>
|
76
|
+
<optional>true</optional>
|
77
|
+
</dependency>
|
78
|
+
|
79
|
+
</dependencies>
|
80
|
+
|
81
|
+
<build>
|
82
|
+
<plugins>
|
83
|
+
<plugin>
|
84
|
+
<artifactId>maven-assembly-plugin</artifactId>
|
85
|
+
<configuration>
|
86
|
+
<descriptors>
|
87
|
+
<descriptor>assembly.xml</descriptor>
|
88
|
+
</descriptors>
|
89
|
+
<tarLongFileMode>gnu</tarLongFileMode>
|
90
|
+
</configuration>
|
91
|
+
<executions>
|
92
|
+
<execution>
|
93
|
+
<id>assembly</id>
|
94
|
+
<phase>package</phase>
|
95
|
+
<goals>
|
96
|
+
<goal>attached</goal>
|
97
|
+
</goals>
|
98
|
+
</execution>
|
99
|
+
</executions>
|
100
|
+
</plugin>
|
101
|
+
</plugins>
|
102
|
+
</build>
|
103
|
+
|
104
|
+
</project>
|
data/test/test_slf4j.rb
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#--
|
3
|
+
# Copyright (c) 2008-2009 David Kellum
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person
|
6
|
+
# obtaining a copy of this software and associated documentation files
|
7
|
+
# (the "Software"), to deal in the Software without restriction,
|
8
|
+
# including without limitation the rights to use, copy, modify, merge,
|
9
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
10
|
+
# and to permit persons to whom the Software is furnished to do so,
|
11
|
+
# subject to the following conditions:
|
12
|
+
#
|
13
|
+
# The above copyright notice and this permission notice shall be
|
14
|
+
# included in all copies or substantial portions of the Software.
|
15
|
+
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
20
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
21
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
22
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
23
|
+
# SOFTWARE.
|
24
|
+
#++
|
25
|
+
|
26
|
+
$LOAD_PATH.unshift File.join( File.dirname(__FILE__), "..", "lib" )
|
27
|
+
|
28
|
+
require 'rjack-slf4j'
|
29
|
+
|
30
|
+
# Load jdk14 implementation for testing
|
31
|
+
require 'rjack-slf4j/jdk14'
|
32
|
+
|
33
|
+
# Now safe to load:
|
34
|
+
require 'rjack-slf4j/mdc'
|
35
|
+
|
36
|
+
# Load these only to confirm loading works
|
37
|
+
require 'rjack-slf4j/jcl-over-slf4j'
|
38
|
+
require 'rjack-slf4j/log4j-over-slf4j'
|
39
|
+
|
40
|
+
require 'test/unit'
|
41
|
+
|
42
|
+
class TestHandler < java.util.logging.Handler
|
43
|
+
attr_accessor :count, :last
|
44
|
+
|
45
|
+
def initialize
|
46
|
+
reset
|
47
|
+
end
|
48
|
+
|
49
|
+
def flush; end
|
50
|
+
def close; end
|
51
|
+
|
52
|
+
def publish( record )
|
53
|
+
@count += 1
|
54
|
+
@last = record
|
55
|
+
end
|
56
|
+
|
57
|
+
def reset
|
58
|
+
@count = 0
|
59
|
+
@last = nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
module Foo
|
64
|
+
module Bar
|
65
|
+
class Baz
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
class TestSlf4j < Test::Unit::TestCase
|
71
|
+
|
72
|
+
JdkLogger = java.util.logging.Logger
|
73
|
+
|
74
|
+
def setup
|
75
|
+
@handler = TestHandler.new
|
76
|
+
@jdk_logger = JdkLogger.getLogger ""
|
77
|
+
@jdk_logger.addHandler @handler
|
78
|
+
@jdk_logger.level = java.util.logging.Level::INFO
|
79
|
+
@log = SLF4J[ "my.app" ]
|
80
|
+
end
|
81
|
+
|
82
|
+
def teardown
|
83
|
+
@handler.reset
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_logger
|
87
|
+
assert !@log.trace?
|
88
|
+
@log.trace( "not written" )
|
89
|
+
assert !@log.debug?
|
90
|
+
@log.debug { "also not written" }
|
91
|
+
assert @log.info?
|
92
|
+
@log.info { "test write info" }
|
93
|
+
assert @log.warn?
|
94
|
+
@log.warn { "test write warning" }
|
95
|
+
assert @log.error?
|
96
|
+
@log.error( "test write error" )
|
97
|
+
assert @log.fatal?
|
98
|
+
@log.fatal { "test write fatal --> error" }
|
99
|
+
assert_equal( 4, @handler.count )
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_native_exception
|
103
|
+
jlist = Java::java.util.ArrayList.new
|
104
|
+
jlist.add( 33 )
|
105
|
+
ex = nil
|
106
|
+
begin
|
107
|
+
jlist.get( 666 ) # IndexOutOfBoundsException
|
108
|
+
rescue Java::java.lang.IndexOutOfBoundsException => x
|
109
|
+
ex = x
|
110
|
+
@log.error( "test java exception", x )
|
111
|
+
end
|
112
|
+
assert_equal( 1, @handler.count )
|
113
|
+
assert_same( ex.cause, @handler.last.thrown )
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_ruby_exception
|
117
|
+
begin
|
118
|
+
0/0 # ZeroDivisionError
|
119
|
+
rescue ZeroDivisionError => x
|
120
|
+
@log.error( x )
|
121
|
+
end
|
122
|
+
assert_equal( 1, @handler.count )
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_ruby_exception_block
|
126
|
+
begin
|
127
|
+
0/0 # ZeroDivisionError
|
128
|
+
rescue ZeroDivisionError => x
|
129
|
+
@log.error( x ) { "ruby exception" }
|
130
|
+
end
|
131
|
+
assert_equal( 1, @handler.count )
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_to_log_name
|
135
|
+
assert_equal( "foo.bar.Baz",
|
136
|
+
SLF4J.to_log_name( Foo::Bar::Baz ) )
|
137
|
+
assert_equal( "foo.bar.Baz", SLF4J[ Foo::Bar::Baz ].name )
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_circular_ban
|
141
|
+
assert_raise( RuntimeError ) do
|
142
|
+
require 'rjack-slf4j/jul-to-slf4j'
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rjack-slf4j
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.5.11.0
|
5
|
+
platform: java
|
6
|
+
authors:
|
7
|
+
- David Kellum
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-03-06 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rjack-tarpit
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.2.0
|
24
|
+
version:
|
25
|
+
description: |-
|
26
|
+
A JRuby adaption and gem packaging of the
|
27
|
+
{Simple Logging Facade for Java}[http://www.slf4j.org/].
|
28
|
+
Provides all jar dependencies and a Ruby Logger compatible
|
29
|
+
facade.
|
30
|
+
|
31
|
+
SLF4J is a java logging abstraction and set of adapters to various
|
32
|
+
concrete logging implementations and legacy logging APIs. The slf4j
|
33
|
+
gem adds a ruby core Logger compatible facade to SLF4J, and makes any
|
34
|
+
needed adapters available to JRuby applications. This makes it
|
35
|
+
possible to unify and control logging output of both java and ruby
|
36
|
+
components in a JRuby application.
|
37
|
+
email:
|
38
|
+
- dek-oss@gravitext.com
|
39
|
+
executables: []
|
40
|
+
|
41
|
+
extensions: []
|
42
|
+
|
43
|
+
extra_rdoc_files:
|
44
|
+
- Manifest.txt
|
45
|
+
- README.rdoc
|
46
|
+
- History.rdoc
|
47
|
+
files:
|
48
|
+
- Manifest.static
|
49
|
+
- Manifest.txt
|
50
|
+
- README.rdoc
|
51
|
+
- History.rdoc
|
52
|
+
- Rakefile
|
53
|
+
- pom.xml
|
54
|
+
- assembly.xml
|
55
|
+
- lib/rjack-slf4j/base.rb
|
56
|
+
- lib/rjack-slf4j.rb
|
57
|
+
- lib/rjack-slf4j/jul-to-slf4j.rb
|
58
|
+
- lib/rjack-slf4j/jul.rb
|
59
|
+
- lib/rjack-slf4j/mdc.rb
|
60
|
+
- test/test_slf4j.rb
|
61
|
+
- lib/rjack-slf4j/jcl-over-slf4j.rb
|
62
|
+
- lib/rjack-slf4j/jcl.rb
|
63
|
+
- lib/rjack-slf4j/jdk14.rb
|
64
|
+
- lib/rjack-slf4j/log4j-over-slf4j.rb
|
65
|
+
- lib/rjack-slf4j/log4j12.rb
|
66
|
+
- lib/rjack-slf4j/nop.rb
|
67
|
+
- lib/rjack-slf4j/simple.rb
|
68
|
+
- lib/rjack-slf4j/jcl-over-slf4j-1.5.11.jar
|
69
|
+
- lib/rjack-slf4j/jul-to-slf4j-1.5.11.jar
|
70
|
+
- lib/rjack-slf4j/log4j-over-slf4j-1.5.11.jar
|
71
|
+
- lib/rjack-slf4j/slf4j-api-1.5.11.jar
|
72
|
+
- lib/rjack-slf4j/slf4j-jcl-1.5.11.jar
|
73
|
+
- lib/rjack-slf4j/slf4j-jdk14-1.5.11.jar
|
74
|
+
- lib/rjack-slf4j/slf4j-log4j12-1.5.11.jar
|
75
|
+
- lib/rjack-slf4j/slf4j-nop-1.5.11.jar
|
76
|
+
- lib/rjack-slf4j/slf4j-simple-1.5.11.jar
|
77
|
+
has_rdoc: true
|
78
|
+
homepage: http://rjack.rubyforge.org
|
79
|
+
licenses: []
|
80
|
+
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options:
|
83
|
+
- --main
|
84
|
+
- README.rdoc
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: "0"
|
92
|
+
version:
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: "0"
|
98
|
+
version:
|
99
|
+
requirements: []
|
100
|
+
|
101
|
+
rubyforge_project: rjack
|
102
|
+
rubygems_version: 1.3.5
|
103
|
+
signing_key:
|
104
|
+
specification_version: 3
|
105
|
+
summary: A JRuby adaption and gem packaging of the {Simple Logging Facade for Java}[http://www.slf4j.org/]
|
106
|
+
test_files:
|
107
|
+
- test/test_slf4j.rb
|