Пример #1
0
 private static function dump($struct)
 {
     if (class_exists('Nette\\Diagnostics\\Dumper')) {
         return Nette\Diagnostics\Dumper::toText($struct);
     }
     return Nette\Diagnostics\Helpers::textDump($struct);
 }
Пример #2
0
 /** @deprecated */
 public static function textDump($var)
 {
     trigger_error(__METHOD__ . '() is deprecated; use Nette\\Diagnostics\\Dumper::toText() instead.', E_USER_DEPRECATED);
     return Dumper::toText($var);
 }
Пример #3
0
 /**
  * Logs message or exception to file (if not disabled) and sends email notification (if enabled).
  * @param  string|Exception
  * @param  int  one of constant Debugger::INFO, WARNING, ERROR (sends email), CRITICAL (sends email)
  * @return string logged error filename
  */
 public static function log($message, $priority = self::INFO)
 {
     if (self::$logDirectory === FALSE) {
         return;
     } elseif (!self::$logDirectory) {
         throw new Nette\InvalidStateException('Logging directory is not specified in Nette\\Diagnostics\\Debugger::$logDirectory.');
     }
     $exceptionFilename = NULL;
     if ($message instanceof \Exception) {
         $exception = $message;
         while ($exception) {
             $tmp[] = ($exception instanceof ErrorException ? 'Fatal error: ' . $exception->getMessage() : get_class($exception) . ": " . $exception->getMessage()) . " in " . $exception->getFile() . ":" . $exception->getLine();
             $exception = $exception->getPrevious();
         }
         $exception = $message;
         $message = implode($tmp, "\ncaused by ");
         $hash = md5(preg_replace('~(Resource id #)\\d+~', '$1', $exception));
         $exceptionFilename = "exception-" . @date('Y-m-d-H-i-s') . "-{$hash}.html";
         foreach (new \DirectoryIterator(self::$logDirectory) as $entry) {
             if (strpos($entry, $hash)) {
                 $exceptionFilename = $entry;
                 $saved = TRUE;
                 break;
             }
         }
     } elseif (!is_string($message)) {
         $message = Dumper::toText($message);
     }
     if ($exceptionFilename) {
         $exceptionFilename = self::$logDirectory . '/' . $exceptionFilename;
         if (empty($saved) && ($logHandle = @fopen($exceptionFilename, 'w'))) {
             ob_start();
             // double buffer prevents sending HTTP headers in some PHP
             ob_start(function ($buffer) use($logHandle) {
                 fwrite($logHandle, $buffer);
             }, 4096);
             self::getBlueScreen()->render($exception);
             ob_end_flush();
             ob_end_clean();
             fclose($logHandle);
         }
     }
     self::getLogger()->log(array(@date('[Y-m-d H-i-s]'), trim($message), self::$source ? ' @  ' . self::$source : NULL, $exceptionFilename ? ' @@  ' . basename($exceptionFilename) : NULL), $priority);
     return $exceptionFilename ? strtr($exceptionFilename, '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR) : NULL;
 }
Пример #4
0
 /**
  * Log a message
  * @param Exception|string|array $message
  * @param null|string $identifier
  * @param null|int $priority
  * @param null|array $args
  * @throws InvalidArgumentException
  */
 public function message($message, $identifier = NULL, $priority = NULL, $args = NULL)
 {
     if (!$message) {
         throw new InvalidArgumentException('The message has to be specified.');
     }
     if ($priority == NULL) {
         $priority = $this->defaultLogLevel;
     }
     if ($priority < self::INFO || $priority > self::WARNING) {
         throw new InvalidArgumentException('Default Log Level must be one of the NasExt\\Logger\'s priority constants.');
     }
     $exception = NULL;
     $exceptionFilename = NULL;
     if ($message instanceof \Exception) {
         $exception = ($message instanceof FatalErrorException ? 'Fatal error: ' . $message->getMessage() : 'HTTP code' . $message->getCode() . ':: ' . get_class($message) . ": " . $message->getMessage()) . " in " . $message->getFile() . ":" . $message->getLine();
         $exceptionFilename = $this->generateExceptionFile($message);
         $message = $message->getMessage();
     }
     if (!is_string($args)) {
         $args = Json::encode($args);
     }
     if (!is_string($message)) {
         $message = Dumper::toText($message);
     }
     $this->loggerRepository->save($message, $exception, $exceptionFilename, $identifier, $priority, $args);
 }