App-Alice
view release on metacpan or search on metacpan
lib/App/Alice/Logger.pm view on Meta::CPAN
12345678910111213141516171819202122232425262728293031323334package
App::Alice::Logger;
use
Any::Moose;
has
callbacks
=> (
is
=>
'ro'
,
isa
=>
'HashRef'
,
default
=>
sub
{
my
$hashref
= {
map
{
uc
$_
=> [\
&print_line
]}
qw/debug info warn error fatal/
};
}
);
sub
add_cb {
my
(
$self
,
$level
,
$cb
) =
@_
;
return
unless
$self
->callbacks->{
$level
};
push
@{
$self
->callbacks->{
$level
}},
$cb
;
}
sub
log
{
my
(
$self
,
$level
,
$message
) =
@_
;
$level
=
uc
$level
;
return
unless
@{
$self
->callbacks->{
$level
}};
$_
->(
$level
,
$message
)
for
@{
$self
->callbacks->{
$level
}};
}
sub
print_line {
my
(
$level
,
$message
) =
@_
;
my
(
$sec
,
$min
,
$hour
,
$day
,
$mon
,
$year
) =
localtime
(
time
);
my
$datestring
=
sprintf
"%02d:%02d:%02d %02d/%02d/%02d"
,
$hour
,
$min
,
$sec
,
$mon
,
$day
,
$year
% 100;
STDERR
substr
(
$level
, 0, 1) .
", [$datestring] "
.
sprintf
(
"% 5s"
,
$level
) .
" -- : $message\n"
;
}
lib/App/Alice/Test/MockIRC.pm view on Meta::CPAN
919293949596979899100101102103104105106107108
my
$self
=
shift
;
$self
->cbs->{registered}->();
}
sub
disconnect {
my
$self
=
shift
;
$self
->cbs->{disconnect}->();
}
sub
enable_ping {}
sub
reg_cb {
my
(
$self
,
%callbacks
) =
@_
;
for
(
keys
%callbacks
) {
$self
->cbs->{
$_
} =
$callbacks
{
$_
};
}
}
__PACKAGE__->meta->make_immutable;
1;
( run in 0.245 second using v1.01-cache-2.11-cpan-4e96b696675 )