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

NAME

Catalyst::Plugin::ErrorCatcher - Catch application errors and emit them somewhere

VERSION

version 0.0.8.13

SYNOPSIS

use Catalyst qw/-Debug StackTrace ErrorCatcher/;

DESCRIPTION

This plugin allows you to do More Stuff with the information that would normally only be seen on the Catalyst Error Screen courtesy of the Catalyst::Plugin::StackTrace plugin.

CONFIGURATION

The plugin is configured in a similar manner to other Catalyst plugins:

<Plugin::ErrorCatcher>
    enable                1
    context               5
    always_log            0
    include_session       0
    user_identified_by    username

    emit_module           A::Module
</Plugin::ErrorCatcher>

STACKTRACE IN REPORTS WHEN NOT RUNNING IN DEBUG MODE

It is possible to run your application in non-Debug mode, and still have errors reported with a stack-trace.

Include the StackTrace and ErrorCatcher plugins in MyApp.pm:

use Catalyst qw<
  ErrorCatcher
  StackTrace
>;

Set up your myapp.conf to include the following:

<stacktrace>
  enable      1
</stacktrace>

<Plugin::ErrorCatcher>
  enable      1
  # include other options here
<Plugin::ErrorCatcher>

Any exceptions should now show your user the "Please come back later" screen whilst still capturing and emitting a report with stack-trace.

PROVIDED EMIT CLASSES

Catalyst::Plugin::ErrorCatcher::Email

This module uses MIME::Lite to send the prepared output to a specified email address.

See Catalyst::Plugin::ErrorCatcher::Email for usage and configuration details.

CUSTOM EMIT CLASSES

A custom emit class takes the following format:

package A::Module;
# vim: ts=8 sts=4 et sw=4 sr sta
use strict;
use warnings;


sub emit {
  my ($class, $c, $output) = @_;


  $c->log->info(
    'IGNORING OUTPUT FROM Catalyst::Plugin::ErrorCatcher'
  );


  return;
}


1;
__END__

The only requirement is that you have a sub called emit.

Catalyst::Plugin::ErrorCatcher passes the following parameters in the call to emit():

If you want to use the original error message you should use:

my @error = @{ $c->error };

You may use and abuse any Catalyst methods, or other Perl modules as you see fit.

KNOWN ISSUES

SEE ALSO

Catalyst, Catalyst::Plugin::StackTrace

THANKS

The authors of Catalyst::Plugin::StackTrace, from which a lot of code was used.

Ash Berlin for guiding me in the right direction after a known hacky first implementation.

CONTRIBUTORS

Fitz Elliot https://github.com/felliott/

AUTHOR

Chisel chisel@chizography.net

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Chisel Wright.

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