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

use strict;
use warnings;

use FindBin '$Bin';
use lib "$Bin/../lib";

use base 'CGI::Application';
use CGI::Application::Plugin::ValidateQuery ':all';

{
    package TestLogger; 
    sub new { 
        my $class = shift;
        my $self = {};
        bless($self, $class);
    }
    sub debug     { my $self = shift; warn $_[0]; }
    sub info      { my $self = shift; warn $_[0]; }
    sub notice    { my $self = shift; warn $_[0]; }
    sub warning   { my $self = shift; warn $_[0]; }
    sub error     { my $self = shift; warn $_[0]; }
    sub critical  { my $self = shift; warn $_[0]; }
    sub alert     { my $self = shift; warn $_[0]; }
    sub emergency { my $self = shift; warn $_[0]; }

    1;
}

sub setup {
    my $self = shift; 
    $self->start_mode('test_mode');
    $self->run_modes(
            test_mode => 'test_mode',
            fail_mode => 'fail_mode'
            );
    $self->{logger} = TestLogger->new();
}

sub test_mode {
    my $self = shift;
    return "output";
}

sub fail_mode {
    my $self = shift;
    return "There has been an error!";
}

sub log {
    my $self = shift; 
    return $self->{logger};
}

1;