ApacheLog-Compressor

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

  ExtUtils::MakeMaker: 6.30
dynamic_config: 0
generated_by: 'Dist::Zilla version 4.300009, CPAN::Meta::Converter version 2.120530'
license: perl
meta-spec:
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
  version: 1.4
name: ApacheLog-Compressor
requires:
  Date::Parse: 0
  DateTime: 0
  Encode: 0
  List::Util: 0
  Socket: 0
  URI: 0
  URI::Escape: 0
  perl: 5.008
version: 0.005

Makefile.PL  view on Meta::CPAN

  "BUILD_REQUIRES" => {},
  "CONFIGURE_REQUIRES" => {
    "ExtUtils::MakeMaker" => "6.30"
  },
  "DISTNAME" => "ApacheLog-Compressor",
  "EXE_FILES" => [],
  "LICENSE" => "perl",
  "NAME" => "ApacheLog::Compressor",
  "PREREQ_PM" => {
    "Date::Parse" => 0,
    "DateTime" => 0,
    "Encode" => 0,
    "List::Util" => 0,
    "Socket" => 0,
    "URI" => 0,
    "URI::Escape" => 0
  },
  "VERSION" => "0.005",
  "test" => {
    "TESTS" => "t/*.t"
  }

dist.ini  view on Meta::CPAN


[@Basic]

[Prereqs]
perl		= 5.008
Socket		= 0
Date::Parse	= 0
List::Util	= 0
URI		= 0
URI::Escape	= 0
DateTime	= 0
Encode		= 0

[Prereqs / TestRequires]

[ExtraTests]

; [CheckExtraTests]
[NextRelease]
[VersionFromModule]
[PodVersion]

lib/ApacheLog/Compressor.pm  view on Meta::CPAN

package ApacheLog::Compressor;
# ABSTRACT: Convert Apache/CLF data to binary format
use strict;
use warnings;

use Socket qw(inet_aton inet_ntoa);
use Date::Parse qw(str2time);
use List::Util qw(min);
use URI;
use URI::Escape qw(uri_unescape);
use DateTime;
use Encode qw(encode_utf8 decode_utf8 FB_DEFAULT is_utf8 FB_CROAK);
use POSIX qw{strftime};

our $VERSION = '0.005';

=head1 NAME

ApacheLog::Compressor - convert Apache / CLF log files into a binary format for transfer

=head1 VERSION

lib/ApacheLog/Compressor.pm  view on Meta::CPAN


sub data_hashref {
	my $self = shift;
	my $data = shift;
	my %info = %$data;

	$info{$_} = $self->from_cache($_, $info{$_}) for qw(vhost user url query useragent refer);
	$info{server} = $self->{server};
	undef $info{$_} for grep { $info{$_} eq '-' } qw(user refer size useragent);
	undef $info{query} unless defined $info{query} && length $info{query};
#DateTime->from_epoch(epoch => $self->{timestamp})->strftime("%d/%b/%Y:%H:%M:%S %z");
	$info{timestamp} = strftime("%d/%b/%Y:%H:%M:%S %z", gmtime($self->{timestamp}));
	return \%info;
}

=head2 data_to_text

Internal method for converting the current log entry to a text string in
something approaching the 'standard' Apache log format (almost, but not quite,
CLF).

lib/ApacheLog/Compressor.pm  view on Meta::CPAN

	my $self = shift;
	my $data = shift;
	my $q = $self->from_cache('query', $data->{query});
	$q = '' unless defined $q;
	return join(' ',
		$self->from_cache('vhost', $data->{vhost}),
		$data->{duration},
		$data->{ip},
		'-',
		$self->from_cache('user', $data->{user}),
		'[' . DateTime->from_epoch(epoch => $self->{timestamp})->strftime("%d/%b/%Y:%H:%M:%S %z") . ']',
		'"' . $data->{method} . ' ' . $self->from_cache('url', $data->{url}) . (length $q ? "?$q" : "") . ' HTTP/' . ($data->{ver} ? '1.1' : '1.0') . '"',
		$data->{result},
		$data->{size},
		'"' . $self->from_cache('useragent', $data->{useragent}) . '"',
		'"' . $self->from_cache('refer', $data->{refer}) . '"',
	);
}

=head2 handle_server



( run in 0.426 second using v1.01-cache-2.11-cpan-05444aca049 )