PHP Classes
Icontem

File: apache-log-parser.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of sam  >  Apache log parser  >  apache-log-parser.php  
File: apache-log-parser.php
Role: Class source
Content type: text/plain
Description: Main class file
Class: Apache log parser
Parse Apache log files in the common log format
 

Contents

Class file image Download
<?php
/*
+----------------------------------------------+
|                                              |
|         PHP apache log parser class          |
|                                              |
+----------------------------------------------+
| Filename   : apache-log-parser.php           |
| Created    : 21-Sep-05 23:28 GMT             |
| Created By : Sam Clarke                      |
| Email      : admin@free-webmaster-help.com   |
| Version    : 1.0                             |
|                                              |
+----------------------------------------------+


LICENSE

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License (GPL)
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

To read the license please visit http://www.gnu.org/copyleft/gpl.html

*/

class apache_log_parser
{

  var 
$bad_rows// Number of bad rows
  
var $fp// File pointer

  
function format_log_line($line)
  {
    
preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/"$line$matches); // pattern to format the line
    
return $matches;
  }

  function 
format_line($line)
  {
    
$logs $this->format_log_line($line); // format the line

    
if (isset($logs[0])) // check that it formated OK
    
{
      
$formated_log = array(); // make an array to store the lin info in
      
$formated_log['ip'] = $logs[1];
      
$formated_log['identity'] = $logs[2];
      
$formated_log['user'] = $logs[2];
      
$formated_log['date'] = $logs[4];
      
$formated_log['time'] = $logs[5];
      
$formated_log['timezone'] = $logs[6];
      
$formated_log['method'] = $logs[7];
      
$formated_log['path'] = $logs[8];
      
$formated_log['protocal'] = $logs[9];
      
$formated_log['status'] = $logs[10];
      
$formated_log['bytes'] = $logs[11];
      
$formated_log['referer'] = $logs[12];
      
$formated_log['agent'] = $logs[13];
      return 
$formated_log// return the array of info
    
}
    else
    {
      
$this->badRows++; // if the row is not in the right format add it to the bad rows
      
return false;
    }
  }

  function 
open_log_file($file_name)
  {
    
$this->fp fopen($file_name'r'); // open the file
    
if (!$this->fp)
    {
      return 
false// return false on fail
    
}
    return 
true// return true on sucsess
  
}

  function 
close_log_file()
  {
    return 
fclose($this->fp); // close the file
  
}

  
// gets a line from the log file
  
function get_line()
  {
    if (
feof($this->fp))
    {
       return 
false;
    }
    
$bits='';
    
// I find for loops much much faster
    
for (;!feof($this->fp) && $bits != "\n";)
    {
      
$bits .= fread($this->fp1);
    }
    return 
rtrim($bits"\n");
  }

}
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products