/** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context * @return null */ public function log($level, $message, array $context = array()) { $errstr = $backtrace = $errno = $errfile = $errline = $code = null; if (isset($context[0]) && $context[0] instanceof \Exception) { $errstr = $context[0]->getMessage(); $backtrace = $context[0]->getTraceAsString(); $errfile = $context[0]->getFile(); $errline = $context[0]->getLine(); $code = $context[0]->getCode(); } else { if (array_key_exists('exception', $context) and $context['exception'] instanceof \Exception) { $errstr = $context['exception']->getMessage(); $backtrace = $context['exception']->getTraceAsString(); $errfile = $context['exception']->getFile(); $errline = $context['exception']->getLine(); $code = $context['exception']->getCode(); } else { $errortype = array(E_ERROR => 'Erreur', E_WARNING => 'Alerte', E_PARSE => 'Erreur d\'analyse', E_NOTICE => 'Notice', E_CORE_ERROR => 'Core Error', E_CORE_WARNING => 'Core Warning', E_COMPILE_ERROR => 'Compile Error', E_COMPILE_WARNING => 'Compile Warning', E_USER_ERROR => 'Erreur spécifique', E_USER_WARNING => 'Alerte spécifique', E_USER_NOTICE => 'Note spécifique', E_STRICT => 'Runtime Notice', E_RECOVERABLE_ERROR => 'Catchable Fatal Error'); $errno = Filter::int($level); if ($errno && array_key_exists($errno, $errortype)) { $level = $errortype[$errno]; } $errfile = Filter::raw('file', $context); $errline = Filter::raw('line', $context); $code = null; } } \Fp\Core\Debug::msg($message, $backtrace, $errno, $errfile, $errline, $level); self::$logMessage[] = "<div><b>{$level}:</b> {$message}<div>{$errfile} {$errline}<pre>{$backtrace}</pre></div></div>"; }