NAME

Sentry::Raven - A perl sentry client

VERSION

Version 0.02

SYNOPSIS

my $raven = Sentry::Raven->new(sentry_dsn => 'http://<publickey>:<secretkey>@app.getsentry.com/<projectid>' );
$raven->capture_message('The sky is falling');

DESCRIPTION

This module implements the recommended raven interface for posting events to a sentry service.

SUBROUTINES/METHODS

my $raven = Sentry::Raven->new( %options )

Create a new sentry interface object. It accepts the following named options:

sentry_dsn => 'http://<publickey>:<secretkey>@app.getsentry.com/<projectid>'

The DSN for your sentry service. Get this from the client configuration page for your project.

timeout => 5

Do not wait longer than this number of seconds when attempting to send an event.

$raven->capture_errors( $subref, %options )

Execute the $subref and report any exceptions (die) back to the sentry service. This automatically includes a stacktrace. This requires $SIG{__DIE__} so be careful not to override it in subsequent code or error reporting will be impacted.

$raven->capture_message( $message, %options )

Post a string message to the sentry service. Returns the event id.

$raven->capture_exception( $exception_type, $exception_value, %options )

Post an exception type and value to the sentry service. Returns the event id.

$raven->capture_request( $url, %request_options, %options )

Post a web url request to the sentry service. Returns the event id.

%options can contain:

method => 'GET'
data => { $key => $value }
query_string => 'foo=bar'
cookies => 'foo=bar'
headers => { 'Content-Type' => 'text/html' }
env => { REMOTE_ADDR => '192.168.0.1' }

$raven->capture_stacktrace( $frames, %options )

Post a stacktrace to the sentry service. Returns the event id.

$frames is an arrayref of hashrefs with each hashref representing a single frame.

my $frames = [
    {
        filename => 'my/file1.pl',
        function => 'function1',
        vars     => { foo => 'bar' },
        lineno   => 10,
    },
    {
        filename => 'my/file2.pl',
        function => 'function2',
        vars     => { bar => 'baz' },
        lineno   => 20,
    },
];

The first frame should be the oldest frame. Frames must contain at least one of filename, function, or module. These additional attributes are also supported:

filename => $file_name
function => $function_name
module => $module_name
lineno => $line_number
colno => $column_number
abs_path => $absolute_path_file_name
context_line => $line_of_code
pre_context => [ $previous_line1, $previous_line2 ]
post_context => [ $next_line1, $next_line2 ]
in_app => $one_if_not_external_library
vars => { $variable_name => $variable_value }

STANDARD OPTIONS

These options can be passed to all methods accepting %options. Passing these options to the constructor overrides defaults.

culprit => 'Some::Software'

The source of the event. Defaults to undef.

event_id => '534188f7c1ff4ff280c2e1206c9e0548'

The unique identifier string for an event, usually UUID v4. Max 32 characters. Defaults to a new unique UUID for each event. Invalid ids may be discarded silently.

extra => { key1 => 'val1', ... }

Arbitrary key value pairs with extra information about an event. Defaults to {}.

level => 'error'

Event level of an event. Acceptable values are fatal, error, warning, info, and debug. Defaults to error.

logger => 'root'

The creator of an event. Defaults to 'root'.

platform => 'perl'

The platform (language) in which an event occurred. Defaults to perl.

server_name => 'localhost.example.com'

The hostname on which an event occurred. Defaults to the system hostname.

tags => { key1 => 'val1, ... }

Arbitrary key value pairs with tags for categorizing an event. Defaults to {}.

timestamp => '1970-01-01T00:00:00'

Timestamp of an event. ISO 8601 format. Defaults to the current time. Invalid values may be discarded silently.

CONFIGURATION AND ENVIRONMENT

SENTRY_DSN=http://<publickey>:<secretkey>@app.getsentry.com/<projectid>

A default DSN to be used if sentry_dsn is not passed to c<new>.

LICENSE

Copyright (C) 2014 by Rentrak Corporation

The full text of this license can be found in the LICENSE file included with this module.