#!/usr/bin/perl -w # # splitlog v1.1 # TiChou $0 = 'splitlog'.(@ARGV ? ' '.join(' ',@ARGV) : ''); use strict; my $logdir = "/var/log/apache"; my $vhostdir = "/server/www/vhosts"; die "Usage: $0 logname\n" unless (@ARGV); my $log = $ARGV[0]; my ($date,$host,$vhost); while () { s/ (\(?)::ffff:([^ ]+)(\)?)/ $1$2$3/g; s/^(.{15}) "((\134\134|\134"|[^"])*)" /$date=$1;($host=lc($2))||($host="no-host");$host=~y# #_#;$host=~s#\134\134#\134#g;$host=~s#\134"#"#g;"$date $host "/e; $vhost = -d "$vhostdir/$host" ? 1 : 0; if ($vhost && ! -d "$logdir/vhosts/$host") { mkdir "$logdir/vhosts/$host", 0711 or die "Can't mkdir $logdir/vhosts/$host: $!\n"; } open LOG, ">>$logdir/".($vhost ? "vhosts/$host/" : "")."$log" or die "Can't open $logdir/".($vhost ? "vhosts/$host/" : "")."$log: $!\n"; print LOG; close LOG; }