Xferlogのログパーサがあった件について
仕事中にPerlでApacheのaccess.logのログパーサを使っている最中にふと
「そういえばXferlogのログパーサはないもんかね」と思い立ち、
仕事中のリフレッシュも兼ねて検索したらやっぱりあった。
早速試してみようということで、portsからインストールしよう……と思っていたが、
# make search name=XferLog #
ない。仕方が無いからcpanを使ってモジュールをインストールすることにした。
可能な限りperlモジュールもportsからインストールしておきたかったのだけど……無いんじゃあなあ。
ちなみにCPANのサイトに載っている情報によると、
どうやらログから分割した要素をhashに入れるようになっているらしい。
試しにうちのサーバを利用している人がどれくらいDLしていっているかを計算してみた。
#!/usr/bin/perl use strict; use Net::FTPServer::XferLog; my $XFERLOG = '/var/log/xferlog'; my $totalsize = 0; my $size_for_calc = 0; my $hashref; open LOG, "$XFERLOG" or die "System Error: $!\n"; while(<LOG>) { $hashref = Net::FTPServer::XferLog->parse_line($_); foreach my $column (@Net::FTPServer::XferLog::field) { if ($column eq 'file_size') { $size_for_calc = $hashref->{$column}; } if ($column eq 'dierction' && $hashref->{$column} eq 'o') { $totalsize += $size_for_calc; $size_for_calc = 0; } } } close LOG; print "TOTAL SIZE: $totalsize\n"; exit 0;
こんな感じ。