コード例 #1
0
ファイル: Logger.php プロジェクト: 4Publish/4p_core
 /**
  * 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>";
 }