或
LogFile="/opt/awstats/tools/logresolvemerge.pl /var/apachelogs/*.0206.vblog.log|"
#!/bin/sh
year_month=`date -d yesterday "+%Y-%m-%d"`echo $year_monthLOGDIR17=/home/tomcat/account/log17/LOGDIR18=/home/tomcat/account/log18/LOGDIR=/home/tomcat/account/logs/
prefix='localhost_access_log.'
suffix='.log'fileName17=$LOGDIR17$prefix$year_month$suffixecho $fileName17fileName18=$LOGDIR18$prefix$year_month$suffixecho $fileName18filesName=$LOGDIR$prefix$year_month$suffix
echo $filesNamesort -m -t " " -k 4 -o $filesName $fileName17 $fileName18
echo "end..."
然后加上两个调度:
0 5 * * * sh /home/tomcat/shell/awstat.sh 30 4 * * * sh /home/tomcat/shell/awstat_day.sh
进行正常的日志分析即可。
11)awstats 如何统计以前的日志?
awstats.pl 脚本支持在命令行指定logfile,这样简单了,改变这个参数就可以了。不过要注意的是,如果你的data里面已经处理新的日志,那么指定logfile也没用了,以前的没办法更新进来了。只能是删掉data里面的内容,然后重新从最早的开始生成一遍。我写了一个脚本来做这个事情。
按照月份:
#!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-binlogfile_dir="/home/tomcat/account/logs"cd $awstats_dirfor file in `find $logfile_dir -name "localhost_access_log.2012-05-*" | sort`;do #echo "$file" ./awstats.pl -update -config=seegooReport -LogFile=$filedone#!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-binlogfile_dir="/home/tomcat/account/logs"cd $awstats_dirfor file in `find $logfile_dir -name "localhost_access_log.2012-05-*" | sort`;do #echo "$file" ./awstats.pl -update -config=seegooReport -LogFile=$file -databasebreak=daydone生成以前的按月的分析日志:
#!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-binlogfile_dir="/home/tomcat/account/logs"cd $awstats_dirfor file in `find $logfile_dir -name "localhost_access_log.$1-*" | sort`;do#$1为调用shell脚本的年-月参数 #echo "$file" ./awstats.pl -update -config=seegooReport -LogFile=$filedone生成以前的按天进行统计的分析日志:
#!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats_day/WEB-INF/cgi-binlogfile_dir="/home/tomcat/account/logs"cd $awstats_dirfor file in `find $logfile_dir -name "localhost_access_log.$1-*" | sort`;do #echo "$file" ./awstats.pl -update -config=seegooReport -LogFile=$file -databasebreak=daydone 假如脚本运行正常,出现: Create/Update database for config "./awstats.seegooReport.conf" by AWStats version 7.0 (build 1.971) From data in log file "/opt/tomcat/logs/localhost_access_log.2013-01-17.log"... Phase 1 : First bypass old records, searching new record... Direct access to last remembered record is out of file. So searching it from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 316 Found 0 dropped records, Found 0 comments, Found 0 blank records, Found 0 corrupted records, Found 249 old records, Found 67 new qualified records. 而通过浏览器访问,要生成的访问数据仍然没有生成,那么应该删除webapps/awstats/WEB-INF/cgi-bin/data/awstats012013.seegooReport.txt文件中的 LastLine 20130117154428 316 97118 20376852288363 FirstTime 20130101090526 LastTime 20130117154425 几个参数,就可以了。(事实上,我是直接将整个awstats012013.seegooReport.txt文件都删除了,所有的数据重新用脚本生成一遍。)%...a: 远程IP地址
%...A: 本地IP地址
%...B: 已发送的字节数,不包含HTTP头
%...b: CLF格式的已发送字节数量,不包含HTTP头。
例如当没有发送数据时,写入‘-’而不是0。
%e: 环境变量FOOBAR的内容
%...f: 文件名字
%...h: 远程主机
%...H 请求的协议
%i: Foobar的内容,发送给服务器的请求的标头行。
%...l: 远程登录名字(来自identd,如提供的话)
%...m 请求的方法
%n: 来自另外一个模块的注解“Foobar”的内容
%o: Foobar的内容,应答的标头行
%...p: 服务器响应请求时使用的端口
%...P: 响应请求的子进程ID。
%...q 查询字符串(如果存在查询字符串,则包含“?”后面的
部分;否则,它是一个空字符串。)
%...r: 请求的第一行
%...s: 状态。对于进行内部重定向的请求,这是指*原来*请求
的状态。如果用%...>s,则是指后来的请求。
%...t: 以公共日志时间格式表示的时间(或称为标准英文格式)
%t: 以指定格式format表示的时间
%...T: 为响应请求而耗费的时间,以秒计
%...u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)
%...U: 用户所请求的URL路径
%...v: 响应请求的服务器的ServerName
%...V: 依照UseCanonicalName设置得到的服务器名字