/** * Traces a log message * @param string $message The message * @param int $logLevel The log level * @color string $color The color of the message in the log */ private function log($message, $logLevel = LOG_MIN_LEVEL, $color = NULL) { // Tests log level if (!IS_FILE_LOG_ENABLED || !$this->logFile) { return; } if ($this->detailedMode || $logLevel >= LOG_MIN_LEVEL && (!$this->silentMode || $logLevel >= LogTool::WARNING_LEVEL)) { $logHeaderList = array(); // Sets headers // Log type if ($logLevel >= LogTool::ERROR_LEVEL) { $logHeaderList[LogTool::TYPE_FIELD] = 'ERROR'; } else { if ($logLevel >= LogTool::WARNING_LEVEL) { $logHeaderList[LogTool::TYPE_FIELD] = 'WARNING'; } else { if ($logLevel >= LogTool::NOTICE_LEVEL) { $logHeaderList[LogTool::TYPE_FIELD] = 'NOTICE'; } else { $logHeaderList[LogTool::TYPE_FIELD] = 'DEBUG'; } } } // Remote ip if (ArrayTool::array_key_exists('REMOTE_ADDR', $_SERVER)) { $logHeaderList[LogTool::REMOTE_IP_FIELD] = $_SERVER['REMOTE_ADDR']; } else { $logHeaderList[LogTool::REMOTE_IP_FIELD] = ''; } // Current uri/script $logHeaderList[LogTool::URI_FIELD] = basename($_SERVER['PHP_SELF']); // Current time $logHeaderList[LogTool::DATE_FIELD] = DateTool::getTimeString(DateTool::FORMAT_TIME); // host $logHeaderList[LogTool::HOST_FIELD] = php_uname('n'); // computes header $logHeader = '[' . $logHeaderList[LogTool::DATE_FIELD] . '] ' . $logHeaderList[LogTool::TYPE_FIELD] . ' [' . ($logHeaderList[LogTool::REMOTE_IP_FIELD] ? $logHeaderList[LogTool::REMOTE_IP_FIELD] . ' > ' : '') . $logHeaderList[LogTool::HOST_FIELD] . '] ' . $logHeaderList[LogTool::URI_FIELD]; // computes log line $logLine = $color . $logHeader . ': ' . str_replace(PHP_EOL, PHP_EOL . $logHeader . ': ', $message) . PHP_EOL; // Opens new log file if date has changed if (DateTool::getTimeString(DateTool::FORMAT_MYSQL_DATE) != $this->currentLogDate) { $this->closeLogFile(); $this->openLogFile(); } // Finally write the line in log file fwrite($this->logFile, $logLine); } }
<?php // Starts session before header is sent session_start(); require_once '../../../init/initLog.inc.php'; $currentDay = DateTool::getTimeString(DateTool::FORMAT_MYSQL_DATE); define('TAIL_LOG_FILE', LOG_DIR . '/' . $currentDay . '-web.log'); $grep = RequestTool::getParameter('grep', RequestTool::PARAM_TYPE_FREE, false); $logFile = file_exists(TAIL_LOG_FILE) ? file(TAIL_LOG_FILE) : array(); $starterLine = SessionTool::getInstance()->getParameter('startLine', false, 0); $lineCount = count($logFile); for ($index = $starterLine; $index < $lineCount; ++$index) { // Filter lines per grep if ($grep && !StringTool::strpos($logFile[$index], $grep)) { continue; } $truncate = true; switch (StringTool::substr($logFile[$index], 0, 7)) { case "[1;32m": $color = '#5F5'; // Green break; case "[1;33m": $color = '#FF5'; // Yellow break; case "[0;31m": $color = '#F55'; // Red break; case "[1;34m":
/** * Converts a timestamp to a time string * @param int $timestamp The timestamp (default is NULL for now) * @param string $format The string format * @return string The time string */ public static function timestampToString($timestamp, $format = DateTool::FORMAT_MYSQL_DATETIME) { if (!StringTool::isInt($timestamp)) { throw new Exception('Unable to convert timestamp to time string : "' . $timestamp . '" is not an integer'); } return DateTool::getTimeString($format, $timestamp); }