lib/loggability/logger.rb in loggability-0.3.0 vs lib/loggability/logger.rb in loggability-0.4.0
- old
+ new
@@ -123,14 +123,35 @@
end # class ObjectNameProxy
+ ### Return an equivalent Loggability::Logger object for the given +logger+.
+ def self::from_std_logger( logger )
+ device = logger.instance_variable_get( :@logdev ) or
+ raise ArgumentError, "%p doesn't appear to be a Logger (no @logdev)" % [ logger ]
+
+ newlogger = self.new( device.dev )
+
+ newlogger.level = logger.level
+ newlogger.formatter = logger.formatter
+
+ return newlogger
+ end
+
+
+ #################################################################
+ ### I N S T A N C E M E T H O D S
+ #################################################################
+
### Create a new Logger wrapper that will output to the specified +logdev+.
def initialize( logdev=DEFAULT_DEVICE, *args )
- super
+ super( nil )
+
self.level = if $DEBUG then :debug else :warn end
+ self.output_to( logdev, *args )
+
@default_formatter = Loggability::Formatter.create( :default )
end
######
@@ -187,10 +208,10 @@
### +args+ are passed to the LogDevice's constructor. In addition to Logger's support for
### logging to IO objects and files (given a filename in a String), this method can also
### set up logging to any object that responds to #<<.
def output_to( target, *args )
if target.respond_to?( :write ) || target.is_a?( String )
- opts = { :shift_age => args.shift, :shift_size => args.shift }
+ opts = { :shift_age => args.shift || 0, :shift_size => args.shift || 1048576 }
self.logdev = Logger::LogDevice.new( target, opts )
elsif target.respond_to?( :<< )
self.logdev = AppendingLogDevice.new( target )
else
raise ArgumentError, "don't know how to output to %p (a %p)" % [ target, target.class ]