Security Advisories (1)
CPANSA-Dancer2-2018-01 (2018-01-30)

There is a potential RCE with regards to Storable. We have added session ID validation to the session engine so that session backends based on Storable can reject malformed session IDs that may lead to exploitation of the RCE.

NAME

Dancer2::Logger::Capture - Capture dancer logs

VERSION

version 0.202000

SYNOPSIS

The basics:

set logger => "capture";

my $trap = dancer_app->logger_engine->trapper;
my $logs = $trap->read;

A worked-out real-world example:

use Test::More tests => 2;
use Dancer2;

set logger => 'capture';

warning "Danger!  Warning!";
debug   "I like pie.";

my $trap = dancer_app->logger_engine->trapper;

is_deeply $trap->read, [
    { level => "warning", message => "Danger!  Warning!" },
    { level => "debug",   message => "I like pie.", }
];

# each call to read cleans the trap
is_deeply $trap->read, [];

DESCRIPTION

This is a logger class for Dancer2 which captures all logs to an object.

It's primary purpose is for testing. Here is an example of a test:

use strict;
use warnings;
use Test::More;
use Plack::Test;
use HTTP::Request::Common;

{
    package App;
    use Dancer2;

    set log       => 'debug';
    set logger    => 'capture';

    get '/' => sub {
        log(debug => 'this is my debug message');
        log(core  => 'this should not be logged');
        log(info  => 'this is my info message');
    };
}

my $app = Dancer2->psgi_app;
is( ref $app, 'CODE', 'Got app' );

test_psgi $app, sub {
    my $cb = shift;

    my $res = $cb->( GET '/' );

    my $trap = App->dancer_app->logger_engine->trapper;

    is_deeply $trap->read, [
        { level => 'debug', message => 'this is my debug message' },
        { level => 'info',  message => 'this is my info message' },
    ];

    is_deeply $trap->read, [];
};

done_testing;

METHODS

trapper

Returns the Dancer2::Logger::Capture::Trap object used to capture and read logs.

SEE ALSO

Dancer2::Core::Role::Logger, Dancer2::Logger::Capture::Trap

AUTHOR

Dancer Core Developers

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Alexis Sukrieh.

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