114 |
|
|
115 |
our $audit = __PACKAGE__->new; |
our $audit = __PACKAGE__->new; |
116 |
|
|
117 |
sub audit { |
sub _store_audit { |
118 |
my $data = pop @_; |
my ( $id, $data ) = @_; |
119 |
|
$audit->put( "pxelator/$id", $data ); |
|
my $url = join(' ', @_); |
|
|
$url =~ s/\s+-\S+//g; # remove command line options |
|
|
$url =~ s/\W+/-/g; |
|
|
|
|
|
my $time = $data->{time} = time(); |
|
|
|
|
|
my @caller_name = ( qw/package file line sub/ ); |
|
|
my @caller = caller(0); |
|
|
$caller[3] =~ s{^.+::}{}; # stip package name from sub |
|
|
$data->{ $caller_name[$_] } = $caller[$_] foreach ( 0 .. $#caller_name ); |
|
|
|
|
|
my $caller; |
|
|
my $depth = 0; |
|
|
while ( my @c = caller($depth) ) { |
|
|
push @$caller, [ splice(@c,0,4) ]; |
|
|
$depth++; |
|
|
} |
|
|
|
|
|
$data->{caller} = $caller; |
|
|
|
|
|
# carp 'audit ', dump($data); |
|
|
|
|
|
$time = int($time); # reduce granularity for url |
|
|
my $package = $caller[0]; |
|
|
$audit->put( "pxelator/$time.$package.$url", $data ); |
|
|
|
|
120 |
} |
} |
121 |
|
|
122 |
1; |
1; |