logDirectory = $logDirectory; $this->minimumLoggingLevel = $logLevel; $this->sLogFilePrefix = $sLogFilePrefix; } function running_user() { if (substr(PHP_OS, 0, 3) == "WIN") { return null; } if (extension_loaded("posix")) { $uid = posix_getuid(); $userdetails = posix_getpwuid($uid); return $userdetails['name']; } if (file_exists('/usr/bin/whoami')) { return exec('/usr/bin/whoami'); } if (file_exists('/usr/bin/id')) { return exec('/usr/bin/id -nu'); } return null; } /** * Creates the log file from the current datetime */ function initialiseLogFile() { global $default; $user = $this->running_user(); if (!file_exists($this->logDirectory)) { $res = @mkdir($this->logDirectory, 0755); if ($res === false) { return new PEAR_Error('Failed to create log directory (check permissions)'); } } if ($user) { $this->logFile = sprintf("%s/%s-%s.%s.txt", $this->logDirectory, $this->sLogFilePrefix, date("Y-m-d"), $user); } else { $this->logFile = sprintf("%s/%s-%s.txt", $this->logDirectory, $this->sLogFilePrefix, date("Y-m-d")); } if (!file_exists($this->logFile)) { $res = @touch($this->logFile); if ($res === false) { return new PEAR_Error('Failed to create log file ' . $this->logFile . ' (check permissions)'); } } if (!is_writable($this->logFile)) { return new PEAR_Error('Cannot write to log file ' . $this->logFile . ' (check permissions)'); } } /** * Log a debug entry * * @param string the message to write to the log file */ function debug($logEntry) { $this->writeLog($this->prefixEntry($logEntry, "DEBUG"), DEBUG); } /** * Log an info entry * * @param string the message to write to the log file */ function info($logEntry) { $this->writeLog($this->prefixEntry($logEntry, "INFO"), INFO); } /** * Log an error entry * * @param string the message to write to the log file */ function error($logEntry) { $this->writeLog($this->prefixEntry($logEntry, "ERROR"), ERROR); } /** * Writes to the log file, checking that the log level is within * the minimum logging level * * @param string the message to write to the log file * @param int the error level to log at */ function writeLog($logEntry, $logLevel) { if ($logLevel >= $this->minimumLoggingLevel) { if (@$fp = fopen($this->logFile, "a")) { fwrite($fp, $logEntry); } @fclose($fp); } } /** * Prefixes the log entry with the current date time, the logging level * and the page that called it * * @param string the message to write to the log file * @param int the error level to log at */ function prefixEntry($logEntry, $logLevel) { return getCurrentDateTime() . " (" . getenv("REMOTE_ADDR") . ") $logLevel: $logEntry\n"; } } ?>