/** * Writes a log line * * @param int $loglevel one of the defined LOGLEVELS * @param string $message * @param boolean $truncate indicate if the message should be truncated, default true * * @access public * @return */ public static function Write($loglevel, $message, $truncate = true) { // truncate messages longer than 10 KB $messagesize = strlen($message); if ($truncate && $messagesize > 10240) { $message = substr($message, 0, 10240) . sprintf(" <log message with %d bytes truncated>", $messagesize); } self::$lastLogs[$loglevel] = $message; $data = self::buildLogString($loglevel) . $message . "\n"; if ($loglevel <= LOGLEVEL) { self::writeToLog($loglevel, $data, LOGFILE); } // should we write this into the user log? if ($loglevel <= LOGUSERLEVEL && self::$userLog) { // padd level for better reading $data = str_replace(self::getLogLevelString($loglevel), self::getLogLevelString($loglevel, true), $data); // is the user authenticated? if (self::logToUserFile()) { // something was logged before the user was authenticated, write this to the log if (!empty(self::$unAuthCache)) { self::writeToLog($loglevel, implode('', self::$unAuthCache), LOGFILEDIR . self::logToUserFile() . ".log"); self::$unAuthCache = array(); } // only use plain old a-z characters for the generic log file self::writeToLog($loglevel, $data, LOGFILEDIR . self::logToUserFile() . ".log"); } else { self::$unAuthCache[] = $data; } } if ($loglevel & LOGLEVEL_FATAL || $loglevel & LOGLEVEL_ERROR) { self::writeToLog($loglevel, $data, LOGERRORFILE); } if ($loglevel & LOGLEVEL_WBXMLSTACK) { self::$wbxmlDebug .= $message . "\n"; } }