LogFormat="date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-bytes"
Don't put line break in.
A format like this works well for IIS logs:
LogFile="C:/WINNT/system32/LogFiles/W3SVC3/ex%YY-24%MM-24%DD-24.log"
When you run awstats, you can also specify which file you want it to run on (as long as it is where you specified for the LogFile location above):
perl c:\awstats-6.5\wwwroot\cgi-bin\awstats.pl -config=mymodel -LogFile="C:/WINNT/system32/LogFiles/W3SVC3/ex061123.log" -update
Again, no line breaks.
Sample list.txt
ex090120.log ex090121.log ex090122.log
Run awstats.pl
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ini_set('max_execution_time', 0); echo '[START] ' . date('Y-m-d H:i:s') . PHP_EOL; $domain_name = 'www.example.com'; $log_path = 'G:/LogFiles/W3SVC2113097918'; $lines = file('list.txt'); $lineCount = count($lines); for ($i = 0; $i < $lineCount; $i++) { $line = rtrim($lines[$i]); $cmd = 'perl D:/www/Apache2.2/cgi-bin/awstats-6.95/wwwroot/cgi-bin/awstats.pl -config=' . $domain_name . ' -LogFile="' . $log_path . '/' . $line . '" -update'; exec($cmd); echo $line . PHP_EOL; } echo '[END] ' . date('Y-m-d H:i:s') . PHP_EOL; echo "done"; ?>
Generate Output
<?php $domain_name = 'www.example.com'; $year = '2009'; $log_file = 'G:/LogFiles/W3SVC2113097918/ex%YY-24%MM-24%DD-24.log'; for ($i = 1; $i<=12; $i++) { $month = sprintf("%02d", $i); $cmd = 'perl D:/www/Apache2.2/cgi-bin/awstats-6.95/wwwroot/cgi-bin/awstats.pl -config=' . $domain_name . ' -LogFile="' . $log_file . '" -month=' . $month . ' -year=' . $year . ' -output -staticlinks > ' . $domain_name . '_' . $year . '-' . $month . '.html'; exec($cmd); echo $month . PHP_EOL; } ?>
No comments:
Post a Comment