⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simple.pm

📁 source of perl for linux application,
💻 PM
字号:
package Log::Message::Simple;use strict;use Log::Message private => 0;;BEGIN {     use vars qw[$VERSION];     $VERSION = 0.04; }        =pod=head1 NAMELog::Message::Simple=head1 SYNOPSIS    use Log::Message::Simple qw[msg error debug                                carp croak cluck confess];    use Log::Message::Simple qw[:STD :CARP];    ### standard reporting functionality    msg(    "Connecting to database",           $verbose );    error(  "Database connection failed: $@",   $verbose );    debug(  "Connection arguments were: $args", $debug );    ### standard carp functionality    carp(   "Wrong arguments passed: @_" );    croak(  "Fatal: wrong arguments passed: @_" );    cluck(  "Wrong arguments passed -- including stacktrace: @_" );    confess("Fatal: wrong arguments passed -- including stacktrace: @_" );    ### retrieve individual message    my @stack = Log::Message::Simple->stack;    my @stack = Log::Message::Simple->flush;    ### retrieve the entire stack in printable form    my $msgs  = Log::Message::Simple->stack_as_string;    my $trace = Log::Message::Simple->stack_as_string(1);    ### redirect output    local $Log::Message::Simple::MSG_FH     = \*STDERR;    local $Log::Message::Simple::ERROR_FH   = \*STDERR;    local $Log::Message::Simple::DEBUG_FH   = \*STDERR;        ### force a stacktrace on error    local $Log::Message::Simple::STACKTRACE_ON_ERROR = 1=head1 DESCRIPTIONThis module provides standardized logging facilities using theC<Log::Message> module.=head1 FUNCTIONS=head2 msg("message string" [,VERBOSE])Records a message on the stack, and prints it to C<STDOUT> (or actuallyC<$MSG_FH>, see the C<GLOBAL VARIABLES> section below), if theC<VERBOSE> option is true.The C<VERBOSE> option defaults to false.Exported by default, or using the C<:STD> tag.=head2 debug("message string" [,VERBOSE])Records a debug message on the stack, and prints it to C<STDOUT> (oractually C<$DEBUG_FH>, see the C<GLOBAL VARIABLES> section below), if the C<VERBOSE> option is true.The C<VERBOSE> option defaults to false.Exported by default, or using the C<:STD> tag.=head2 error("error string" [,VERBOSE])Records an error on the stack, and prints it to C<STDERR> (or actuallyC<$ERROR_FH>, see the C<GLOBAL VARIABLES> sections below), if theC<VERBOSE> option is true.The C<VERBOSE> options defaults to true.Exported by default, or using the C<:STD> tag.=cut {   package Log::Message::Handlers;        sub msg {        my $self    = shift;        my $verbose = shift || 0;        ### so you don't want us to print the msg? ###        return if defined $verbose && $verbose == 0;        my $old_fh = select $Log::Message::Simple::MSG_FH;        print '['. $self->tag (). '] ' . $self->message . "\n";        select $old_fh;        return;    }    sub debug {        my $self    = shift;        my $verbose = shift || 0;        ### so you don't want us to print the msg? ###        return if defined $verbose && $verbose == 0;        my $old_fh = select $Log::Message::Simple::DEBUG_FH;        print '['. $self->tag (). '] ' . $self->message . "\n";        select $old_fh;        return;    }    sub error {        my $self    = shift;        my $verbose = shift;           $verbose = 1 unless defined $verbose;    # default to true        ### so you don't want us to print the error? ###        return if defined $verbose && $verbose == 0;        my $old_fh = select $Log::Message::Simple::ERROR_FH;        my $msg     = '['. $self->tag . '] ' . $self->message;        print $Log::Message::Simple::STACKTRACE_ON_ERROR                     ? Carp::shortmess($msg)                     : $msg . "\n";        select $old_fh;        return;    }}=head2 carp();Provides functionality equal to C<Carp::carp()> while still loggingto the stack.Exported by using the C<:CARP> tag.=head2 croak();Provides functionality equal to C<Carp::croak()> while still loggingto the stack.Exported by using the C<:CARP> tag.=head2 confess();Provides functionality equal to C<Carp::confess()> while still loggingto the stack.Exported by using the C<:CARP> tag.=head2 cluck();Provides functionality equal to C<Carp::cluck()> while still loggingto the stack.Exported by using the C<:CARP> tag.=head1 CLASS METHODS=head2 Log::Message::Simple->stack()Retrieves all the items on the stack. Since C<Log::Message::Simple> isimplemented using C<Log::Message>, consult its manpage for thefunction C<retrieve> to see what is returned and how to use the items.=head2 Log::Message::Simple->stack_as_string([TRACE])Returns the whole stack as a printable string. If the C<TRACE> option istrue all items are returned with C<Carp::longmess> output, rather thanjust the message.C<TRACE> defaults to false.=head2 Log::Message::Simple->flush()Removes all the items from the stack and returns them. SinceC<Log::Message::Simple> is  implemented using C<Log::Message>, consult itsmanpage for the function C<retrieve> to see what is returned and howto use the items.=cutBEGIN {    use Exporter;    use Params::Check   qw[ check ];    use vars            qw[ @EXPORT @EXPORT_OK %EXPORT_TAGS @ISA ];;    @ISA            = 'Exporter';    @EXPORT         = qw[error msg debug];    @EXPORT_OK      = qw[carp cluck croak confess];        %EXPORT_TAGS    = (        STD     => \@EXPORT,        CARP    => \@EXPORT_OK,        ALL     => [ @EXPORT, @EXPORT_OK ],    );            my $log         = new Log::Message;    for my $func ( @EXPORT, @EXPORT_OK ) {        no strict 'refs';                                ### up the carplevel for the carp emulation                        ### functions        *$func = sub {  local $Carp::CarpLevel += 2                            if grep { $_ eq $func } @EXPORT_OK;                                                    my $msg     = shift;                        $log->store(                                message => $msg,                                tag     => uc $func,                                level   => $func,                                extra   => [@_]                        );                };    }    sub flush {        return reverse $log->flush;    }    sub stack {        return $log->retrieve( chrono => 1 );    }    sub stack_as_string {        my $class = shift;        my $trace = shift() ? 1 : 0;        return join $/, map {                        '[' . $_->tag . '] [' . $_->when . '] ' .                        ($trace ? $_->message . ' ' . $_->longmess                                : $_->message);                    } __PACKAGE__->stack;    }}=head1 GLOBAL VARIABLES=over 4=item $ERROR_FHThis is the filehandle all the messages sent to C<error()> are beingprinted. This defaults to C<*STDERR>.=item $MSG_FHThis is the filehandle all the messages sent to C<msg()> are beingprinted. This default to C<*STDOUT>.=item $DEBUG_FHThis is the filehandle all the messages sent to C<debug()> are beingprinted. This default to C<*STDOUT>.=item $STACKTRACE_ON_ERRORIf this option is set to C<true>, every call to C<error()> will generate a stacktrace using C<Carp::shortmess()>.Defaults to C<false>=cutBEGIN {    use vars qw[ $ERROR_FH $MSG_FH $DEBUG_FH $STACKTRACE_ON_ERROR ];    local $| = 1;    $ERROR_FH               = \*STDERR;    $MSG_FH                 = \*STDOUT;    $DEBUG_FH               = \*STDOUT;        $STACKTRACE_ON_ERROR    = 0;}1;# Local variables:# c-indentation-style: bsd# c-basic-offset: 4# indent-tabs-mode: nil# End:# vim: expandtab shiftwidth=4:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -