App-Framework
view release on metacpan or search on metacpan
lib/App/Framework/Feature/Logging.pm view on Meta::CPAN
}
#----------------------------------------------------------------------------
=item B<logging($arg1, [$arg2, ....])>
Log the argument(s) to the log file iff a log file has been specified.
The list of arguments may be: SCALAR, ARRAY reference, HASH reference, SCALAR reference. SCALAR and SCALAR ref are printed
as-is without any extra newlines. ARRAY ref is printed out one entry per line with a newline added. The HASH ref is printed out
in the format produced by L<App::Framework::Base::Object::DumpObj>.
=cut
sub logging
{
my $this = shift ;
my (@args) = @_ ;
my $tolog = "" ;
foreach my $arg (@args)
{
if (ref($arg) eq 'ARRAY')
{
foreach (@$arg)
{
$tolog .= "$_\n" ;
}
}
elsif (ref($arg) eq 'HASH')
{
$tolog .= prtstr_data($arg) . "\n" ;
}
elsif (ref($arg) eq 'SCALAR')
{
$tolog .= $$arg ;
}
elsif (!ref($arg))
{
$tolog .= $arg ;
}
else
{
$tolog .= prtstr_data($arg) . "\n" ;
}
}
## Log
my $logfile = $this->logfile ;
if ($logfile)
{
## start if we haven't yet
if (!$this->_started)
{
$this->_start_logging() ;
}
open my $fh, ">>$logfile" or $this->throw_fatal("Error: unable to append to logfile \"$logfile\" : $!") ;
print $fh $tolog ;
close $fh ;
}
## Echo
if ($this->to_stdout)
{
print $tolog ;
}
return($this) ;
}
#----------------------------------------------------------------------------
=item B<echo_logging($arg1, [$arg2, ....])>
Same as L</logging> but echoes output to STDOUT.
=cut
sub echo_logging
{
my $this = shift ;
my (@args) = @_ ;
# Temporarily force echoing to STDOUT on, then do logging
my $to_stdout = $this->to_stdout ;
$this->to_stdout(1) ;
$this->logging(@args) ;
$this->to_stdout($to_stdout) ;
return($this) ;
}
#----------------------------------------------------------------------------
=item B< Logging([%args]) >
Alias to L</logging>
=cut
*Logging = \&logging ;
# ============================================================================================
# PRIVATE METHODS
# ============================================================================================
#----------------------------------------------------------------------------
#
#=item B<_start_logging()>
#
#Create/append log file
#
#=cut
#
sub _start_logging
{
my $this = shift ;
my $logfile = $this->logfile() ;
if ($logfile)
{
my $mode = ">" ;
if ($this->mode eq 'append')
{
$mode = ">>" ;
}
open my $fh, "$mode$logfile" or $this->throw_fatal("Unable to write to logfile \"$logfile\" : $!") ;
close $fh ;
## set flag
$this->_started(1) ;
}
}
# ============================================================================================
# END OF PACKAGE
=back
=head1 DIAGNOSTICS
Setting the debug flag to level 1 prints out (to STDOUT) some debug messages, setting it to level 2 prints out more verbose messages.
=head1 AUTHOR
Steve Price C<< <sdprice at cpan.org> >>
=head1 BUGS
None that I know of!
=cut
1;
__END__
( run in 0.756 second using v1.01-cache-2.11-cpan-39bf76dae61 )