spec/loggability/logger_spec.rb in loggability-0.15.1 vs spec/loggability/logger_spec.rb in loggability-0.16.0
- old
+ new
@@ -104,31 +104,35 @@
it "defaults to :warn level" do
expect( logger.level ).to eq( :warn )
end
+
it "defaults to :debug level when $DEBUG is true" do
begin
$DEBUG = true
expect( described_class.new.level ).to eq( :debug )
ensure
$DEBUG = false
end
end
+
it "allows its levels to be set with integers like Logger" do
newlevel = Logger::DEBUG
$stderr.puts "Setting newlevel to %p" % [ newlevel ]
logger.level = newlevel
expect( logger.level ).to eq( :debug )
end
+
it "allows its levels to be set with Symbolic level names" do
logger.level = :info
expect( logger.level ).to eq( :info )
end
+
it "allows its levels to be set with Stringish level names" do
logger.level = 'fatal'
expect( logger.level ).to eq( :fatal )
end
@@ -139,46 +143,78 @@
it "logs to STDERR by default" do
expect( logger.logdev.dev ).to be( $stderr )
end
+
it "can be told to log to a file" do
tmpfile = Tempfile.new( 'loggability-device-spec' )
logger.output_to( tmpfile.path )
expect( logger.logdev.dev ).to be_a( File )
end
+
it "supports log-rotation arguments for logfiles" do
tmpfile = Tempfile.new( 'loggability-device-spec' )
logger.output_to( tmpfile.path, 5, 125000 )
expect( logger.logdev.dev ).to be_a( File )
expect( logger.logdev.filename ).to eq( tmpfile.path )
expect( logger.logdev.instance_variable_get(:@shift_age) ).to eq( 5 )
expect( logger.logdev.instance_variable_get(:@shift_size) ).to eq( 125000 )
end
+
+ it "can be told to log to a file and delegate to ruby's built-in logger log device" do
+ logfile = double( "logfile.log" )
+ expect( Loggability::LogDevice ).to receive( :create ).
+ with( :file, 'log_file.log' ).
+ and_return( logfile )
+
+ logfile = Loggability::LogDevice.create( :file, 'log_file.log' )
+ expect( logger ).to receive( :output_to ).
+ with( logfile ).
+ and_return( nil )
+
+ logger.output_to( logfile )
+
+ expect( logger.logdev ).to be_a( Logger::LogDevice )
+ end
+
+
+ it "can be told to log to a custom log device type" do
+ logger.output_to( :http, 'https://logapi.example.com:41133/v1/logintake' )
+
+ device = logger.logdev
+
+ expect( device ).to be_a( Loggability::LogDevice::Http )
+ expect( device.endpoint.to_s ).to eq( 'https://logapi.example.com:41133/v1/logintake' )
+ end
+
+
it "can be told to log to an Array" do
logmessages = []
logger.output_to( logmessages )
- expect( logger.logdev ).to be_a( Loggability::Logger::AppendingLogDevice )
+ expect( logger.logdev ).to be_a( Loggability::LogDevice::Appending )
logger.level = :debug
logger.info( "Something happened." )
expect( logmessages.size ).to eq( 1 )
expect( logmessages.first ).to match( /something happened/i )
end
+
it "doesn't re-wrap a Logger::LogDevice" do
tmpfile = Tempfile.new( 'loggability-device-spec' )
logger.output_to( tmpfile.path, 5, 125000 )
original_logdev = logger.logdev
logger.output_to( original_logdev )
expect( logger.logdev ).to be( original_logdev )
end
- it "doesn't re-wrap an AppendingLogDevice" do
+
+ it "doesn't re-wrap an Appending log device" do
log_array = []
logger.output_to( log_array )
logger.output_to( logger.logdev )
expect( logger.logdev.target ).to be( log_array )
@@ -191,28 +227,32 @@
it "logs with the default formatter by default" do
expect( logger.formatter ).to be_a( Loggability::Formatter::Default )
end
+
it "can be told to use the default formatter explicitly" do
logger.format_as( :default )
expect( logger.formatter ).to be_a( Loggability::Formatter::Default )
end
+
it "can be told to use a block as a formatter" do
logger.format_with do |severity, datetime, progname, msg|
original_formatter.call(severity, datetime, progname, msg.dump)
end
expect( logger.formatter ).to be_a( Proc )
end
+
it "can be told to use the HTML formatter" do
logger.format_as( :html )
expect( logger.formatter ).to be_a( Loggability::Formatter::HTML )
end
+
it "supports formatting with ::Logger::Formatter, too" do
output = []
logger.output_to( output )
logger.level = :debug
logger.formatter = ::Logger::Formatter.new
@@ -241,9 +281,10 @@
proxy.fatal( "A fatal message." )
expected_format = /DEBUG \{Object:0x[[:xdigit:]]+\} -- A debug message.\n/i
expect( messages.first ).to match( expected_format )
end
+
it "has a terse inspection format" do
object = Object.new
expect(
logger.proxy_for( object ).inspect