/[Frey]/trunk/lib/Frey/Shell/Log.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/lib/Frey/Shell/Log.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 894 - (show annotations)
Wed Dec 24 21:42:20 2008 UTC (15 years, 4 months ago) by dpavlin
File size: 1114 byte(s)
added simple log parser with filtering
1 package Frey::Shell::Log;
2 use Moose;
3
4 extends 'Frey';
5 with 'Frey::Web';
6
7 use DateTimeX::Easy;
8
9 has log_command => (
10 is => 'rw',
11 isa => 'Str',
12 required => 1,
13 default => 'tail /var/log/daemon.log',
14 );
15
16 has from_datetime => (
17 is => 'rw',
18 isa => 'Str',
19 );
20
21 has to_datetime => (
22 is => 'rw',
23 isa => 'Str',
24 );
25
26 sub as_sponge {
27 my ($self) = @_;
28
29 my $cmd = $self->log_command;
30 warn "# cmd: $cmd";
31
32 my @rows;
33
34 my $from = DateTimeX::Easy->parse( $self->from_datetime ) if $self->from_datetime;
35 my $to = DateTimeX::Easy->parse( $self->to_datetime ) if $self->to_datetime;
36
37 warn "# from: $from" if $from;
38 warn "# to: $to" if $to;
39
40 open(my $fh, '-|', $cmd) || die "can't open pipe to $cmd $!";
41 while(<$fh>) {
42 chomp;
43
44 if ( m{^(\w\w\w) (\d\d) (\d\d:\d\d:\d\d) (.+)} ) {
45 my $message = $4;
46 my $dt = DateTimeX::Easy->parse("2008-$1-$2 $3");
47 if ( $from ) {
48 next if $dt < $from;
49 }
50 if ( $to ) {
51 next if $dt > $to;
52 }
53 push @rows, [ $dt->ymd . ' ' . $dt->hms, $message ];
54 } else {
55 warn "# skip $_\n";
56 }
57 }
58
59 return {
60 NAME => [ 'date', 'message' ],
61 rows => \@rows,
62 }
63 }
64
65 1;

  ViewVC Help
Powered by ViewVC 1.1.26