Jyxo\ErrorHandler::log PHP Method

log() public static method

Logs a message.
public static log ( array $message, boolean $fire = true ) : boolean
$message array Message definition
$fire boolean Shall we use FirePHP?
return boolean Was logging successful?
    public static function log(array $message, bool $fire = true) : bool
    {
        // Adds default values if missing
        if (!isset($message['file'])) {
            $message['file'] = null;
        }
        if (!isset($message['line'])) {
            $message['line'] = null;
        }
        if (!isset($message['trace'])) {
            $message['trace'] = [];
        }
        if (!isset($message['previous'])) {
            $message['previous'] = [];
        }
        // We don't want HTML tags and entities in the log
        if (ini_get('html_errors')) {
            $message['text'] = html_entity_decode(strip_tags($message['text']));
        }
        // Request type
        if (!empty($_SERVER['argv'])) {
            // CLI
            $request = implode(' ', $_SERVER['argv']);
        } else {
            // Apache
            $request = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
            $request .= $_SERVER['REQUEST_URI'];
        }
        // Base text
        $text = sprintf('%s [Request: %s]', $message['text'], $request);
        if (isset($message['file'], $message['line'])) {
            $text .= sprintf(' [%s: %s]', $message['file'], $message['line']);
        }
        $log = sprintf("%s: %s\n", strtoupper($message['type']), $text);
        // Trace
        $log .= self::getTraceLog($message['trace']);
        // Previous exceptions
        $previousTrace = $message['trace'];
        foreach ($message['previous'] as $previous) {
            // Throw away trace parts that have already been processed
            $trace = array_reverse(array_diff_key(array_reverse($previous->getTrace()), array_reverse($previousTrace)));
            $previousTrace = $previous->getTrace();
            $log .= sprintf("Previous: %s [%s] [%s: %s]\n", $previous->getMessage(), $previous->getCode(), $previous->getFile(), $previous->getLine());
            $log .= self::getTraceLog($trace);
        }
        // FirePHP log for debugging
        if (self::$debug && $fire) {
            self::firephp($message);
        }
        // Logging
        return error_log(trim($log));
    }