The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Log::Any::For::Class - Add logging to class

VERSION

version 0.20

SYNOPSIS

 use Log::Any::For::Class qw(add_logging_to_class);
 add_logging_to_class(classes => [qw/My::Class My::SubClass/]);
 # now method calls to your classes are logged, by default at level 'trace'

DESCRIPTION

Most of the things that apply to Log::Any::For::Package also applies to this module, since this module uses add_logging_to_package() as its backend.

SEE ALSO

Log::Any::For::Package

Log::Any::For::DBI, an application of this module.

DESCRIPTION

This module has Rinci metadata.

FUNCTIONS

None are exported by default, but they are exportable.

add_logging_to_class(%args) -> any

Add logging to class.

Logging will be done using Log::Any.

Currently this function adds logging around method calls, e.g.:

    -> Class::method(...)
    <- Class::method() = RESULT
    ...

Arguments ('*' denotes required arguments):

  • classes* => array

    Classes to add logging to.

  • filter_methods => array

    Filter methods to add logging to.

    The default is to add logging to all non-private methods. Private methods are those prefixed by _.

  • logger_args => any

    Pass arguments to logger.

    This allows passing arguments to logger routine.

  • postcall_logger => code

    Supply custom postcall logger.

    Just like precalllogger, but code will be called after subroutine/method is called. Code will be given a hashref argument \%args containing these keys: args (arrayref, a shallow copy of the original @), orig (coderef, the original subroutine/method), name (string, the fully-qualified subroutine/method name), result (arrayref, the subroutine/method result), logger_args (arguments given when adding logging).

    You can use this mechanism to customize logging.

  • precall_logger => code

    Supply custom precall logger.

    Code will be called when logging subroutine/method call. Code will be given a hashref argument \%args containing these keys: args (arrayref, a shallow copy of the original @_), orig (coderef, the original subroutine/method), name (string, the fully-qualified subroutine/method name), logger_args (arguments given when adding logging).

    You can use this mechanism to customize logging.

    The default logger accepts these arguments (can be supplied via logger_args):

    • indent => INT (default: 0)

    Indent according to nesting level.

    • max_depth => INT (default: -1)

    Only log to this nesting level. -1 means unlimited.

    • logsubargs => BOOL (default: 1)

    Whether to display subroutine arguments when logging subroutine entry. The default can also be supplied via environment LOGSUBARGS.

    • logsubresult => BOOL (default: 1)

    Whether to display subroutine result when logging subroutine exit. The default can also be set via environment LOGSUBRESULT.

Return value:

AUTHOR

Steven Haryanto <stevenharyanto@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Steven Haryanto.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.