/**
  * Logs message or exception to file and sends email notification.
  * @param  string|array|exception
  * @param  int     one of constant INFO, WARNING, ERROR (sends email), CRITICAL (sends email)
  * @return bool    was successful?
  */
 public function log($message, $priority = self::WARNING)
 {
     $file = NULL;
     if ($message instanceof \Exception) {
         ob_start();
         \Nette\Diagnostics::$blueScreen->render($message);
         $file = ob_get_clean();
     } elseif (is_array($message) && isset($message[1])) {
         $message = $message[1];
     } elseif (is_array($message)) {
         $message = implode(' ', $message);
         // needed?
     }
     $this->server->send('log', array('message' => (string) $message, 'priority' => $priority), $file);
     return $this->logger ? $this->logger->log($message, $priority) : TRUE;
 }
 /**
  * @param \Nette\Http\Request
  */
 public function log(\Nette\Http\Request $req)
 {
     $this->server->send('access', array('ua' => $req->getHeader('User-Agent'), 'ip' => $req->getRemoteAddress(), 'host' => $req->getRemoteHost(), 'method' => $req->getMethod(), 'url' => (string) $req->getUrl(), 'memory' => function_exists('memory_get_peak_usage') ? number_format(memory_get_peak_usage() / 1000000, 2, '.', ' ') : 'n/a', 'time' => number_format((microtime(TRUE) - \Nette\Diagnostics\Debugger::$time) * 1000, 1, '.', ' '), 'referer' => (string) $req->getHeader('Referer')));
 }