+Floop::Logger -- Base abstract class for all loggers in Floop
+ use Floop::Logger::Unicorn;
+ # replace the default Console logger with something a little more
+ my $floop = Floop->new(logger =>
+ Floop::Logger::Unicorn->new(log_level => 3),
+ $floop->debug('debug messages are level 5 so they will not show');
+ $floop->info('info messages are level 3 so they will not show');
+ $floop->warning('warning messages are level 3 so they will show');
+ $floop->error('error messages are level 2 so they will show');
+ $floop->fatal('fatal messages are level 1 so they will show,
+ especially when demonstrating apps to the client');
+ $floop->core('core level (6) should be reserved for when debugging Floop itself, or plugins');
+ $floop->log('KOWABUNGA', 'this is a custom log label, it does not have a level');
+ # loggers can choose to redirect this someplace else
+This abstract class provides a common interface to be implemented by
+subclasses. L<Floop> provides two such (simple) subclasses,
+L<Floop::Logger::Console> and L<Floop::Logger::File>.
+(read-write positive integer)
+C<log_level> controls how much of your log statements should be
+printed (or drawn on crystal white beaches by a unicorn's hoof,
+whatever your logger subclass does). Levels 6 through 1 map to
+C<CORE>, C<DEBUG>, C<INFO>, C<WARNING>, C<ERROR> and C<FATAL>,
+ $logger->log('DANGER', 'WILL ROBINSON!');
+The C<log> method's first argument is the log level (as a string) of
+the statement being logged. The rest are usually a single string that
+describes the message being logged, but the base class imposes no
+restrictions on this. L<Floop> itself, however, already logs strings,
+so new logger classes are expected to be able to handle a single
+Application developers are not expected to call this method; it is
+used to log requests separately from debug or error logs. If you
+write a logger subclass, however, you are expected to provide an
+implementation for this method.
+This method takes a L<Plack::Request> as its argument.
+These all curry their respective log level (as a string) to the C<log>
+method. They will do nothing if C<log_level> is not high enough.
+Fabrice Gabolde <firstname.lastname@example.org>
+=head1 COPYRIGHT AND LICENSE
+Copyright (C) 2014 Fabrice Gabolde
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself, either Perl version 5.10.0 or,
+at your option, any later version of Perl 5 you may have available.