کلاس تجزیه گر فایل لاگ سرور آپاچی

۶ سال پیش(به روز شده در ۶ سال پیش) پی اچ پی(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->fp, 1); 
    } 
    return rtrim($bits, "\n"); 
  } 
} 

//example.log
/*
172.0.0.1 - - [21/Sep/2005:23:06:37 +0100] "GET / HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:38 +0100] "GET / HTTP/1.1" 200 1647 "http://www.example.com/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:38 +0100] "GET / HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:38 +0100] "GET / HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:39 +0100] "GET / HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:40 +0100] "GET / HTTP/1.1" 200 12372 "http://www.example.com/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:40 +0100] "GET / HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:41 +0100] "GET / HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
172.0.0.1 - - [21/Sep/2005:23:06:41 +0100] "GET / HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712 Firefox/1.0+"
*/
$apache_log_parser = new apache_log_parser(); // Create an apache log parser 

if ($apache_log_parser->open_log_file('example.log')) // Make sure it opens the log file 
{ 
  while ($line = $apache_log_parser->get_line()) { // while it can get a line 
    $parsed_line = $apache_log_parser->format_line($line); // format the line 
    print_r($parsed_line); // print out the array 
  } 
  $apache_log_parser->close_log_file(); // close the log file 
} 
else 
{ 
  echo 'Sorry cannot open log file.'; 
} 

منبع: http://www.phpclasses.org/browse/file/10984.html

برچسبها

هیچ برچسبی موجود نیست.

فایلهای پیوست شده

  • دانلود  ۲.۵۷ کیلو بایت (apache_log_parser.zip) - کلاس تجزیه گر فایل لاگ سرور آپاچی
  • صفحات پیشنهادی

    کلاس Browser.php , کلاسی قدرتمند در جهت شناسایی مرورگر کاربر...

    کلاس Browser توسط Chris Schuld نوشته شده و تقریبا تمامی مرورگرها را شناسایی می نماید. از خصوصیات بارز این کلاس امکان شناسایی پلتفورم یا سیستم عامل , ربات یا مرورگر بودن , نسخه مرورگر , تشخیص...

    کلاس PHP User Agent...

    همانطور که از نام کلاس پیداست جهت دریافت اطلاعات کاربر وارد شده به سایت این کلاس بکار می آید و اطلاعاتی نظیر مرورگر ، سیستم عامل ، آی پی ، و ... را قادر به بررسی است......

    ذخیره کردن متغیرهای کلاس به فرمت متن(گسترش توابع unserialize و serialize)...

    کلاس پایه ای که قصد معرفی داریم بر پایه دو تابع unserialize و serialize توسعه یافته شده است. همانطور که می دانید وظایف این توابع تبدیل متغیرها به فرمت متن جهت ذخیره سازی آنها است تا بتوان در زمان مناس...

    کلاس رمزنگاری و رمزگشایی Crypter...

    با استفاده از کلاس Crypter براحتی رشته های متنی را بر پایه الگوریتم Base64 رمزگذاری کرده و سپس در مواقع لزوم رمزگشایی کنید......