squid のログの時刻につて

squid の ログは 先頭が時刻なのですが 次のように unix の時刻で表現されています。

1248217969.955     11 192.168.1.10 TCP_MISS/200 1939 GET http://www

このままでは使いにくいので perl で簡単に変換します。

#!/usr/bin/perl

while (<>) {
  chomp;
  my ($t,$d) = /^([\d\.]+)(.*)$/;
  my @lt = localtime($t); $lt[5]+=1900; $lt[4]++;
  printf("%04d\/%02d\/%02d %02d:%02d:%02d%s\n",@lt[5,4,3,2,1,0],$d);
}

これを パイプするか ログファイルを引数にして実行します。

$ cat access.log | ./convert.pl
1248217969.955     11 192.168.1.10 TCP_MISS/200 1939 GET http://www
1248217970.134    339 192.168.1.21 TCP_MISS/200 21245 GET http://cl
1248218095.936      0 192.168.1.33 TCP_MISS/200 32 GET http://www.g

次のような結果になります。

2009/07/22 08:12:49     11 192.168.1.10 TCP_MISS/200 1939 GET http:
2009/07/22 08:12:50    339 192.168.1.21 TCP_MISS/200 21245 GET http
2009/07/22 08:14:55      5 192.168.1.33 TCP_MISS/200 32 GET http://

Google サイト内検索

Amazonアソシエイト