PHP – Class Log Management

This PHP class can log entries to files.

It can append log entry messages to given log files.

The log entries can include the current timestamp and the current script memory usage.

Code Example: Download Example
index.php
<?php
 require_once 'Logger.class.php';

 // write in log file
 $obLog = new Logger('mylog.log');
 $obLog->LogIt('Start script3',true,"\n","r+",true);
 $obLog->LogIt('Start script2',true,"\n","a+",true);
 $obLog->LogIt('Start script1',true,"\n","a+",true);
?>
Logger.class.php
<?php
class Logger {

    /**
     * Link to opened file
     * @access private
     * @var void
     */
    private $logSource ='';

    /**
     * Log file name
     * @access private
     * @var string
     */
    private $logFilename ='';

    /**
     * Constructor
     */
    function __construct($logFilename,$createMode='w'){

        $this->logFilename = $logFilename;
        $this->logSource = fopen($this->logFilename,$createMode);

        if(!$this->logSource) {
            trigger_error('Don create file: '.$this->logFilename,E_USER_ERROR);
        } else {
            fclose($this->logSource);
        }

    }

    /**
     * Write string in log file
     * @param string $str - Your string
     * @param bool $timestamp - Write date in file? (true/false)
     * @param string $writeMode - Mode of write.(see http://ru2.php.net/manual/en/function.fopen.php)
     * @param bool $showMemoryUse - Write memory use in file? (true/false)
     * @return void
     */
    function LogIt($str,$timestamp=true,$separator="\n",$writeMode='a+',$showMemoryUse=true) {

        $this->logSource = fopen($this->logFilename,$writeMode);

        if(!$this->logSource) {
            trigger_error('Don read/write file: '.$this->logFilename,E_USER_ERROR);
        }   else  {

            if($timestamp) {
                $str = date('Y-d-m H:i:s',time()).' -- '.$str;
            }

            if($showMemoryUse) {
                $str = $str.' -- Memory usage: '.$this->ConvertBytes(memory_get_usage(true)).' kb.';
            }

            $ok = fwrite($this->logSource,$str.$separator);
            fclose($this->logSource);
        }
    }
    /**
     * Function convert byte to kilobyte
     * @param string $str - Number use of memory
     * @return int
     */
    function ConvertBytes($str) {
        return intval($str)/1024;
    }
}
?>

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail

Leave a Comment

Your email address will not be published. Required fields are marked *