The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Thorium::Roles::Trace - Add code tracing and argument dumping to your class

VERSION

version 0.510

SYNOPSIS

    package MyModule;
    
    use Moose;
    with qw(Thorium::Roles::Trace);
    
    # ... methods, attributes and such

Then when using an object of your class

    use MyModule;
    
    # new object, with tracing turned on
    
    my $obj = MyModule->new(tacing => 1);
    
    $obj->method(); # method and all calls from $self interally are traced
    # ##### Entering MyModule::method #####
    # ##### Leaving MyModule::method #####
    
    $obj->dump_args_in(1);
    
    $obj->method2({one => 1}); # dump arguments being passed into methods
    # ##### Entering MyModule::method2 #####
    # *** method2 args ***
    # $VAR1 = [                    
    #           {
    #             'one' => 1
    #           }
    #         ];
    # ##### Leaving MyModule::method2 #####

Note that methods added after tracing is set will not be logged until tracing is set again. Methods set with *MyModule::method = sub {} will never be seen; use $meta-add_method> instead!

DESCRIPTION

This role adds tracing to arguments, sub-routines entering/leaving and returned data to Thorium::Log logging or STDERR if no logging sub-system found.

WARNING!

Do not keep tracing enabled in production. It has measurable performance penalties! Tracing should be a temporary debugging action. Proper logging is a permanent debugging action.

MORE WARNING!

Once you turn on tracing it is not possible to turn off as the original references to the sub-routines are embedded into new sub-routines and as a result, lost. It is technically possible add the ability to turn off tracing, but for the sake of simplicity and for the note listed in "WARNING!" the feature is absent.

ATTRIBUTES

Optional Attributes

  • tracing (rw, Bool)

    Turn tracing on or off by setting this attribute to true. Defaults to false.

  • trace_meta (rw, Bool)

    Include calls to the objects meta method (Class::MOP) in trace output. Defaults to false.

  • dump_args (rw, Bool)

    Dump arguments being passed in and out of every method. Note, argument dumping will turn on tracing as well. Defaults to false.

  • dump_args_in (rw, Bool)

    Dump arguments being passed in to a method. Defaults to false.

  • dump_args_out (rw, Bool)

    Dump arguments being passed out of a method. Defaults to false.

  • dump_maxdepth (rw, Maybe[Int])

    Maximum depth of argument dump - sets $Data::Dumper::Maxdepth locally. Defaults to false.

  • dump_skip_self (rw, Bool)

    Do not include $self in dump. This is true by default. Note, this just blindly skips the first argument in @_!

  • trace_dbi_calls (rw, DBH|Bool)

    Add simple tracing callbacks to some DBI methods:

    • connect

    • prepare

    • do

    • disconnect

PUBLIC API METHODS

None. This is a Moose::Role.

AUTHOR

Adam Flott <adam@npjh.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Adam Flott <adam@npjh.com>, CIDC.

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