7 use Time::HiRes qw/time/;
8 use Data::Dump qw(dump);
14 my $conn = MongoDB::Connection->new;
15 our $db = $conn->get_database( 'pxelator' );
16 our $audit = $db->get_collection( 'audit' );
22 my $url = join(' ', @_);
23 $url =~ s/\s+-\S+//g; # remove command line options
28 my @caller = caller(0);
29 $caller[3] = (caller(1))[3];
30 $caller[3] =~ s{^.+::}{}; # stip package name from sub
42 while ( my @c = caller($depth) ) {
43 push @$caller, [ @c ];
47 $data->{caller} = $caller;
51 # carp 'audit ', dump($data);
53 # $time = int($time); # reduce granularity for url
54 $time = strftime("%Y-%m-%d.%H:%M:%S", localtime $time);
55 my $package = $caller[0];
57 # CouchDB::_store_audit( "$time.$package.$url" => $data );
59 # $data->{_id} = "$time.$package.$url";
60 $audit->insert( $data );
65 my ( $from_t, $callback ) = @_;
67 $q->{'package.time'} = { '$lt' => $from_t * 1 } if $from_t;
68 # $q->{'package.name'} = { '$ne' => 'syslogd' };
69 $q->{'tag'} = { '$ne' => 'CRON' };
70 warn "# query ", dump($q);
71 $audit->ensure_index({ 'package.name' => 1 });
72 my $cursor = $audit->query($q)->sort({ 'package.time' => -1 })->limit( 100 );
73 while( my $o = $cursor->next ) {