—package
LWP::ConsoleLogger::Easy;
$LWP::ConsoleLogger::Easy::VERSION
=
'0.000024'
;
use
strict;
use
warnings;
use
LWP::ConsoleLogger;
use
String::Trim;
my
%VERBOSITY
= (
dump_content
=> 8,
dump_cookies
=> 6,
dump_headers
=> 5,
dump_params
=> 4,
dump_status
=> 2,
dump_text
=> 7,
dump_title
=> 3,
dump_uri
=> 1,
);
sub
debug_ua {
my
$ua
=
shift
;
my
$level
=
shift
|| 10;
my
%args
=
map
{
$_
=>
$VERBOSITY
{
$_
} <=
$level
}
keys
%VERBOSITY
;
my
$logger
= LWP::ConsoleLogger->new(
%args
);
add_ua_handlers(
$ua
,
$logger
);
if
( can_load(
modules
=> {
'HTML::FormatText::Lynx'
=> 23 } ) ) {
$logger
->text_pre_filter(
sub
{
my
$text
=
shift
;
my
$content_type
=
shift
;
my
$base_url
=
shift
;
return
$text
unless
$content_type
&&
$content_type
=~ m{html}i;
return
(
trim(
HTML::FormatText::Lynx->format_string(
$text
,
base
=>
$base_url
,
)
),
'text/plain'
);
}
);
}
return
$logger
;
}
sub
add_ua_handlers {
my
$ua
=
shift
;
my
$logger
=
shift
;
$ua
->default_header(
'Accept-Encoding'
=>
scalar
HTTP::Message::decodable() );
$ua
->add_handler(
'response_done'
,
sub
{
$logger
->response_callback(
@_
) }
);
$ua
->add_handler(
'request_send'
,
sub
{
$logger
->request_callback(
@_
) }
);
}
1;
=pod
=encoding UTF-8
=head1 NAME
LWP::ConsoleLogger::Easy - Easy LWP tracing and debugging
=head1 VERSION
version 0.000024
=head1 SYNOPSIS
use LWP::ConsoleLogger::Easy qw( debug_ua );
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
my $logger = debug_ua( $mech );
$mech->get(...);
# now watch the console for debugging output
# ...
# stop dumping headers
$logger->dump_headers( 0 );
my $quiet_logger = debug_ua( $mech, 1 );
my $noisy_logger = debug_ua( $mech, 5 );
=head1 DESCRIPTION
This module gives you the easiest possible introduction to
L<LWP::ConsoleLogger>. It offers one wrappers around L<LWP::ConsoleLogger>:
C<debug_ua>. This function allows you to get up and running quickly with just
a couple of lines of code. It instantiates LWP logging and also returns a
L<LWP::ConsoleLogger> object, which you may then tweak to your heart's desire.
If you're able to install L<HTML::FormatText::Lynx> then you'll get highly
readable HTML to text conversions.
=head1 FUNCTIONS
=head2 debug_ua( $mech, $verbosity )
When called without a verbosity argument, this function turns on all logging.
I'd suggest going with this to start with and then turning down the verbosity
after that. This method returns an L<LWP::ConsoleLogger> object, which you
may tweak to your heart's desire.
my $ua_logger = debug_ua( $mech );
$ua_logger->content_pre_filter( sub {...} );
$ua_logger->logger( Log::Dispatch->new(...) );
$mech->get(...);
You can provide a verbosity level of 0 or more. (Currently 0 - 8 supported.)
This will turn up the verbosity on your output gradually. A verbosity of 0
will display nothing. 8 will display all available outputs.
# don't get too verbose
my $ua_logger = debug_ua( $mech, 4 );
=head2 CAVEATS
Text formatting now defaults to attempting to use L<HTML::FormatText::Lynx> to
format HTML as text. If you do not have this installed, we'll fall back to
using HTML::Restrict to remove any HTML tags which you have not specifically
whitelisted.
If you have L<HTML::FormatText::Lynx> installed, but you don't want to use it,
override the default filter:
my $logger = debug_ua( $mech );
$logger->text_pre_filter( sub { return shift } );
=head2 EXAMPLES
Please see the "examples" folder in this distribution for more ideas on how to
use this module.
=head1 AUTHOR
Olaf Alders <olaf@wundercounter.com>
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2014 by MaxMind, Inc.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
=cut
__END__
# ABSTRACT: Easy LWP tracing and debugging
# ABSTRACT: Start logging your LWP useragent the easy way.