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://