1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
package Dancer2::Logger::Capture::Trap;
# ABSTRACT: a place to store captured Dancer2 logs
$Dancer2::Logger::Capture::Trap::VERSION = '1.0.0';
use Moo;
use Dancer2::Core::Types;
has storage => (
is => 'rw',
isa => ArrayRef,
default => sub { [] },
);
sub store {
my ( $self, $level, $message, $fmt_string ) = @_;
push @{ $self->storage }, {
level => $level,
message => $message,
formatted => $fmt_string,
};
}
sub read {
my $self = shift;
my $logs = $self->storage;
$self->storage( [] );
return $logs;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Dancer2::Logger::Capture::Trap - a place to store captured Dancer2 logs
=head1 VERSION
version 1.0.0
=head1 SYNOPSIS
my $trap = Dancer2::Logger::Capture::Trap->new;
$trap->store( $level, $message );
my $logs = $trap->read;
=head1 DESCRIPTION
This is a place to store and retrieve capture Dancer2 logs used by
L<Dancer2::Logger::Capture>.
=head2 Methods
=head3 new
=head3 store
$trap->store($level, $message);
Stores a log $message and its $level.
=head3 read
my $logs = $trap->read;
Returns the logs stored as an array ref and clears the storage.
For example...
[{ level => "warning", message => "Danger! Warning! Dancer2!" },
{ level => "error", message => "You fail forever" }
];
=head1 SEE ALSO
L<Dancer2::Logger::Capture>
=head1 AUTHOR
Dancer Core Developers
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2023 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.
=cut
|