Module: RJack::Logback
- Defined in:
- lib/rjack-logback.rb,
lib/rjack-logback/base.rb
Overview
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:
-
ConsoleAppender
-
FileAppender
-
PatternLayout
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.
Defined Under Namespace
Modules: AppenderUtil, Util Classes: ConsoleAppender, FileAppender, LevelChangePropagator, Logger, PatternLayout
Constant Summary collapse
- Level =
ch.qos.logback.classic.Level
Java::ch.qos.logback.classic.Level
- TRACE =
Level::TRACE
Level::TRACE
- DEBUG =
Level::DEBUG
Level::DEBUG
- INFO =
Level::INFO
Level::INFO
- WARN =
Level::WARN
Level::WARN
- ERROR =
Level::ERROR
Level::ERROR
- OFF =
Level::OFF
Level::OFF
- DEFAULT_PATTERN =
:nodoc:
"%date [%thread] %-5level %logger{35} - %msg %ex%n"
- JoranConfigurator =
ch.qos.logback.classic.joran.JoranConfigurator
Java::ch.qos.logback.classic.joran.JoranConfigurator
- JPatternLayout =
ch.qos.logback.classic.PatternLayout
Java::ch.qos.logback.classic.PatternLayout
- JConsoleAppender =
ch.qos.logback.core.ConsoleAppender
Java::ch.qos.logback.core.ConsoleAppender
- JFileAppender =
ch.qos.logback.core.FileAppender
Java::ch.qos.logback.core.FileAppender
- JLevelChangePropagator =
Java::ch.qos.logback.classic.jul.LevelChangePropagator
- LOGBACK_VERSION =
Logback java version
'1.1.1'
- VERSION =
Logback gem version
'1.7.0'
- LOGBACK_DIR =
:nodoc:
File.dirname(__FILE__)
- @@context =
SLF4J.linked_factory
Class Method Summary collapse
-
.[](name) ⇒ Object
Synonym for logger(name).
-
.config_console(options = {}) ⇒ Object
Configure a single ConsoleAppender using options hash.
-
.configure {|context| ... } ⇒ Object
Configure Logback with the specified block.
-
.context ⇒ Object
Returns the LoggerContext.
-
.load_xml_config(file) ⇒ Object
Load the specified Logback (Joran) XML configuration file.
-
.logger(name) ⇒ Object
Returns the named Logger.
-
.require_jar(name) ⇒ Object
Load logback jar.
-
.root ⇒ Object
Returns the special “root” Logger.
-
.to_level(l) ⇒ Object
Converts Symbol to Level constant, or return Level unaltered.
Class Method Details
.[](name) ⇒ Object
Synonym for logger(name)
341 342 343 |
# File 'lib/rjack-logback.rb', line 341 def self.[](name) logger( name ) end |
.config_console(options = {}) ⇒ Object
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<String|Array>
-
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)
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 |
# File 'lib/rjack-logback.rb', line 302 def self.config_console( = {} ) configure do |ctx| if [ :propagate_to_jul ] r = ( [ :propagate_to_jul ] == :reset ) ctx.add_listener( LevelChangePropagator.new( r ) ) end console = Logback::ConsoleAppender.new do |a| a.target = "System.err" if [ :stderr ] a.layout = Logback::PatternLayout.new do |layout| pat = [ [ :full ] ? '%date' : '%-4r' ] pat << '[%thread]' if [ :thread ] pat << '%-5level' w = ( [ :lwidth ] || ( [ :full ] ? 35 : 30 ) ) pat << "%logger{#{w}}" mdcs = Array( [ :mdc ] ).map { |k| "%X{#{k}}" } unless mdcs.empty? mp = ( '\(' + mdcs.join(',') + '\)' ) mw = [ :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 = [ :level ] || INFO end end |
.configure {|context| ... } ⇒ Object
Configure Logback with the specified block. The Logback context is reset
, yielded to block, and then started after return from the block.
281 282 283 284 285 286 287 288 |
# File 'lib/rjack-logback.rb', line 281 def self.configure @@context.reset yield context Util.start( context ) nil end |
.context ⇒ Object
Returns the LoggerContext
115 116 117 |
# File 'lib/rjack-logback.rb', line 115 def self.context @@context end |
.load_xml_config(file) ⇒ Object
Load the specified Logback (Joran) XML configuration file. Should be called within a configure … block.
174 175 176 177 178 |
# File 'lib/rjack-logback.rb', line 174 def self.load_xml_config( file ) cfger = JoranConfigurator.new cfger.context = @@context cfger.doConfigure( file ) end |
.logger(name) ⇒ Object
Returns the named Logger
336 337 338 |
# File 'lib/rjack-logback.rb', line 336 def self.logger( name ) Logger.new( @@context.getLogger( name ) ) end |
.require_jar(name) ⇒ Object
Load logback jar.
82 83 84 |
# File 'lib/rjack-logback.rb', line 82 def self.require_jar( name ) require File.join( LOGBACK_DIR, "#{name}-#{ LOGBACK_VERSION }.jar" ) end |
.root ⇒ Object
Returns the special “root” Logger
346 347 348 |
# File 'lib/rjack-logback.rb', line 346 def self.root logger( "root" ) end |
.to_level(l) ⇒ Object
Converts Symbol to Level constant, or return Level unaltered.
351 352 353 354 355 356 357 |
# File 'lib/rjack-logback.rb', line 351 def self.to_level( l ) if l.is_a?( Symbol ) const_get( l.to_s.upcase.to_sym ) else l end end |