module RJack::Logback
Jruby wrapper module for the Logback log writer. Programmatic configuration and setting of logger output levels is supported.
Examples¶ ↑
High level configuration¶ ↑
require 'rjack-logback' RJack::Logback.config_console( :thread => true, :level => :info )
Low level configuration¶ ↑
require 'rjack-logback' log = RJack::SLF4J[ 'example' ] log.info "About to reconfigure..." RJack::Logback.configure do console = RJack::Logback::ConsoleAppender.new do |a| a.target = "System.err" a.layout = RJack::Logback::PatternLayout.new do |p| p.pattern = "%r %-5level %logger{35} - %msg %ex%n" end end RJack::Logback.root.add_appender( console ) RJack::Logback.root.level = RJack::Logback::INFO end # Adjust output levels (also works outside of configure ) RJack::Logback[ 'example' ].level = RJack::Logback::DEBUG log.debug "...after reconfigure."
Configure with Logback XML configuration:
RJack::Logback.configure do RJack::Logback.load_xml_config( 'sample-logback.xml' ) end
Programmatic Configuration Support¶ ↑
Logback java classes implement interfaces
LifeCycle
and ContextAware
for configurability
with Joran (XML). To simplify configuration in ruby, the following classes
have been extended:
The extensions provide a block initializer which sets sensible defaults,
yields to a block for customization, and then calls start
. Logback provides many other components not yet
extended in this way. These can be created directly and or extended in a
similar fashion externally. Consider providing a patch to the rjack project with desired
extensions.
Constants
- DEBUG
Level::DEBUG
- ERROR
Level::ERROR
- INFO
Level::INFO
- JConsoleAppender
ch.qos.logback.core.ConsoleAppender
- JFileAppender
ch.qos.logback.core.FileAppender
- JLevelChangePropagator
- JPatternLayout
ch.qos.logback.classic.PatternLayout
- JoranConfigurator
ch.qos.logback.classic.joran.JoranConfigurator
- LOGBACK_VERSION
Logback java version
- Level
ch.qos.logback.classic.Level
- OFF
Level::OFF
- TRACE
Level::TRACE
- VERSION
Logback gem version
- WARN
Level::WARN
Public Class Methods
Synonym for logger(name)
# File lib/rjack-logback.rb, line 341 def self.[](name) logger( name ) end
Configure a single ConsoleAppender using options hash.
Options¶ ↑
- :stderr
-
Output to standard error? (default: false)
- :full
-
Output full date? (default: false, milliseconds)
- :thread
-
Output thread name? (default: false)
- :level<Level || Symbol>
-
Set root level (default: INFO)
- :lwidth<~to_s>
-
Logger width (default: :full ? 35 : 30)
- :mdc
> One or more Mapped Diagnostic Context keys
- :mdc_width<~to_s}
MDC width (default: unspecified)
- :propagate_to_jul
Propagate level changes to java.util.logging, additionally resetting JUL levels if value is :reset (default: false)
# File lib/rjack-logback.rb, line 302 def self.config_console( options = {} ) configure do |ctx| if options[ :propagate_to_jul ] r = ( options[ :propagate_to_jul ] == :reset ) ctx.add_listener( LevelChangePropagator.new( r ) ) end console = Logback::ConsoleAppender.new do |a| a.target = "System.err" if options[ :stderr ] a.layout = Logback::PatternLayout.new do |layout| pat = [ options[ :full ] ? '%date' : '%-4r' ] pat << '[%thread]' if options[ :thread ] pat << '%-5level' w = ( options[ :lwidth ] || ( options[ :full ] ? 35 : 30 ) ) pat << "%logger{#{w}}" mdcs = Array( options[ :mdc ] ).map { |k| "%X{#{k}}" } unless mdcs.empty? mp = ( '\(' + mdcs.join(',') + '\)' ) mw = options[ :mdc_width ] mp = "%-#{mw}(#{mp})" if mw pat << mp end pat += [ '-', '%msg', '%ex%n' ] layout.pattern = pat.join( ' ' ) end end Logback.root.add_appender( console ) Logback.root.level = options[ :level ] || INFO end end
Returns the LoggerContext
# File lib/rjack-logback.rb, line 115 def self.context @@context end
Load the specified Logback (Joran) XML configuration file. Should be called within a configure {…} block.
# File lib/rjack-logback.rb, line 174 def self.load_xml_config( file ) cfger = JoranConfigurator.new cfger.context = @@context cfger.doConfigure( file ) end
Returns the named Logger
# File lib/rjack-logback.rb, line 336 def self.logger( name ) Logger.new( @@context.getLogger( name ) ) end
Load logback jar.
# File lib/rjack-logback.rb, line 82 def self.require_jar( name ) require File.join( LOGBACK_DIR, "#{name}-#{ LOGBACK_VERSION }.jar" ) end
Returns the special “root” Logger
# File lib/rjack-logback.rb, line 346 def self.root logger( "root" ) end