File: Array.pm

package info (click to toggle)
liblog-dispatch-array-perl 1.005-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 144 kB
  • sloc: perl: 161; makefile: 2
file content (169 lines) | stat: -rw-r--r-- 3,618 bytes parent folder | download
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
use strict;
use warnings;
package Log::Dispatch::Array 1.005;
use parent qw(Log::Dispatch::Output);
# ABSTRACT: log events to an array (reference)

#pod =head1 SYNOPSIS
#pod
#pod   use Log::Dispatch;
#pod   use Log::Dispatch::Array;
#pod
#pod   my $log = Log::Dispatch->new;
#pod
#pod   my $target = [];
#pod
#pod   $log->add(Log::Dispatch::Array->new(
#pod     name      => 'text_table',
#pod     min_level => 'debug',
#pod     array     => $target,
#pod   ));
#pod
#pod   $log->warn($_) for @events;
#pod
#pod   # now $target refers to an array of events
#pod
#pod =head1 DESCRIPTION
#pod
#pod This provides a Log::Dispatch log output system that appends logged events to
#pod an array reference.  This is probably only useful for testing the logging of
#pod your code.
#pod
#pod =method new
#pod
#pod  my $table_log = Log::Dispatch::Array->new(\%arg);
#pod
#pod This method constructs a new Log::Dispatch::Array output object.  Valid
#pod arguments are:
#pod
#pod   array - a reference to an array to append to; defaults to an attr on
#pod           $table_log
#pod
#pod =cut

sub new {
  my ($class, %arg) = @_;
  $arg{array} ||= [];

  my $self = { array => $arg{array} };

  bless $self => $class;

  # this is our duty as a well-behaved Log::Dispatch plugin
  $self->_basic_init(%arg);

  return $self;
}

#pod =method array
#pod
#pod This method returns a reference to the array to which logging is being
#pod performed.
#pod
#pod =cut

sub array { $_[0]->{array} }

#pod =method log_message
#pod
#pod This is the method which performs the actual logging, as detailed by
#pod Log::Dispatch::Output.
#pod
#pod =cut

sub log_message {
  my ($self, %p) = @_;
  push @{ $self->array }, { %p };
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Log::Dispatch::Array - log events to an array (reference)

=head1 VERSION

version 1.005

=head1 SYNOPSIS

  use Log::Dispatch;
  use Log::Dispatch::Array;

  my $log = Log::Dispatch->new;

  my $target = [];

  $log->add(Log::Dispatch::Array->new(
    name      => 'text_table',
    min_level => 'debug',
    array     => $target,
  ));

  $log->warn($_) for @events;

  # now $target refers to an array of events

=head1 DESCRIPTION

This provides a Log::Dispatch log output system that appends logged events to
an array reference.  This is probably only useful for testing the logging of
your code.

=head1 PERL VERSION

This library should run on perls released even a long time ago.  It should work
on any version of perl released in the last five years.

Although it may work on older versions of perl, no guarantee is made that the
minimum required version will not be increased.  The version may be increased
for any reason, and there is no promise that patches will be accepted to lower
the minimum required perl.

=head1 METHODS

=head2 new

 my $table_log = Log::Dispatch::Array->new(\%arg);

This method constructs a new Log::Dispatch::Array output object.  Valid
arguments are:

  array - a reference to an array to append to; defaults to an attr on
          $table_log

=head2 array

This method returns a reference to the array to which logging is being
performed.

=head2 log_message

This is the method which performs the actual logging, as detailed by
Log::Dispatch::Output.

=head1 AUTHOR

Ricardo SIGNES <cpan@semiotic.systems>

=head1 CONTRIBUTOR

=for stopwords Ricardo Signes

Ricardo Signes <rjbs@semiotic.systems>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2008 by Ricardo SIGNES.

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