squid日志的分割
上网查了很久都没有我想要的结果,真的很郁闷!于是我决定想尽办法来达到我想要的结果,离我期望的还差那么一点点但相对来说自己还是比较满意的。好了多话不说了,进入题:
系统是centos5.2的,既然需要的squid日志的提取,相信squid代理的配置应该都没有问题,在这里就不多说了。在这提供两种方法:
方法—:
需要安装软件包,newsyslog-1.8.tar.gz 自己可以从网上下载,在这就不多说了。
安装步骤:1
./configure
make
make install------此步安装完成后newsyslog应道安装在以下路径
安装这步可能会提示你创建文件或目录如下:
Mkdir /usr/local/man/-----------------后新建一个man8文件
1.2修改配置文件
/usr/local/etc/newsyslog.conf
set squid_logpath = /var/log/squid/access.log --------squid日志的路径下面就不过多的解释
set squid_log = /var/log/squid/access.log
set date_squid_log = /var/log/squid/access%Y%M%D.log
SQUID{
restart: run
/usr/sbin/squid -k rotate
log: SQUID squid_log squid squid 644
archive: SQUID
date_squid_log 0
步骤1.3-----保存退出后
执行 newsyslog即可也可以将此任务添加到crontab文件里
00 23 *
* *
/usr/local/sbin/newsyslog
方法二:
那就要编写一个shell了
Shell的内容如下:shell的存放/var/log/squid/extract-today.sh
#!/bin/bash
date
> today-string-file
#$grepLine="perl
-pe 's/[\d\.]+/localtime($&)/e' access.log|grep "
cat
today-string-file | while read LINE ; do
field1=`echo
$LINE|awk '{print $1}'`
field2=`echo
$LINE|awk '{print $2}'`
field3=`echo
$LINE|awk '{print $3}'`
field4=`echo
$LINE|awk '{print $4}'`
field5=`echo
$LINE|awk '{print $5}'`
field6=`echo
$LINE|awk '{print $6}'`
echo
$field1
echo
$field2
echo
$field3
echo
$field4
echo
$field5
echo
$field6
#pattern=$field1"
"$field2" "$field3
#echo
$pattern
LEN=`expr
length "$field3"`
echo
$LEN
if
[ $LEN -eq 1 ]; then
#pattern=$field1"
"$field2" "$field3
echo
"perl -pe 's/[\d\.]+/localtime($&)/e' access.log|grep '$field1
$field2
$field3'|grep '$field6'">extrToday
bash
extrToday > Today-Squid-Accessed-Log
fi
if
[ $LEN -eq 2 ]; then
#pattern=$field1"
"$field2" "$field3
echo
"perl -pe 's/[\d\.]+/localtime($&)/e' access.log|grep '$field1
$field2
$field3'|grep '$field6'">extrToday
bash
extrToday > Today-Squid-Accessed-Log
fi
done
保存退出,执行刚建立的shell你就可以查看了 Today-Squid-Accessed-Log文件了哈哈大功告成!
----------------------------------end