ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/MP/LogCatcher.pm
(Generate patch)

Comparing AnyEvent-MP/MP/LogCatcher.pm (file contents):
Revision 1.1 by root, Sun Sep 6 00:13:21 2009 UTC vs.
Revision 1.4 by root, Mon Sep 7 18:42:09 2009 UTC

46 my $cb = sub { 46 my $cb = sub {
47 snd $rport, @_ 47 snd $rport, @_
48 if $_[0] <= $loglevel; 48 if $_[0] <= $loglevel;
49 }; 49 };
50 50
51 rcv $SELF, sub { };#d#
52
53 push @AnyEvent::MP::Kernel::WARN, $cb; 51 push @AnyEvent::MP::Kernel::WARN, $cb;
54 52
55 # monitor them, silently die 53 # monitor them, silently die
56 mon $rport, sub { 54 mon $rport, sub {
57 @AnyEvent::MP::Kernel::WARN = grep $_ != $cb, @AnyEvent::MP::Kernel::WARN; 55 @AnyEvent::MP::Kernel::WARN = grep $_ != $cb, @AnyEvent::MP::Kernel::WARN;
74 $level, 72 $level,
75 $msg; 73 $msg;
76 }; 74 };
77 75
78 # establish connection 76 # establish connection
79 my $rport = spawn $node, "AnyEvent::MP::LogCatcher::connect", 0, $lport, $LOGLEVEL; 77 AnyEvent::MP::Kernel::snd_to_func $node, "AnyEvent::MP::LogCatcher::connect", 0, $lport, $LOGLEVEL;
80 78
81 mon $rport, $lport; 79 mon $node, $lport;
82 mon $lport, sub {
83 warn "$lport $rport <@_>\n";#d#
84 };
85} 80}
81
82=item AnyEvent::MP::LogCatcher::catch [$level]
83
84Starts catching all log messages from all nodes with level C<$level> or
85lower. If the C<$level> is C<undef>, then stop catching all messages
86again.
87
88Example: start a node that catches all messages (you might have to specify
89a suitable profile name).
90
91 aemp run profilename services '[["AnyEvent::MP::LogCatcher::catch",9]]'
92
93=cut
86 94
87sub catch { 95sub catch {
88 $LOGLEVEL = $_[0]; 96 $LOGLEVEL = $_[0];
89 kil $_, "restart" for values %lport; 97 kil $_, "restart" for values %lport;
90 %lport = (); 98 %lport = ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines