/** * @test * @group logger * @group logger-get-stacktrace **/ public function エラー内容をトレースする() { try { throw new \Exception('これはテストです'); } catch (\Exception $e) { $log = Logger::getStackTrace($e); $this->assertTrue(is_string($log)); } }
/** * エントリを解析して必要データを配列で返す * * @param DOMElement $entry * @return array **/ private function _parseEntry($entry) { try { $entry_date = $this->plugin->getEntryDate($entry); // 今日の登録されたエントリではない、またはTestData使用でなければそのまま返す if (date('Y-m-d') != $entry_date && $this->plugin->hasTestData() === false) { return array(); } $url = false; $url = $this->plugin->getEntryUrl($entry); $html = $this->plugin->fetchHtml($url); $title = $this->plugin->getEntryTitle($html); $eyecatch = $this->plugin->getEyeCatchUrl($html); $movies = $this->plugin->getMoviesUrl($html); $result = array('title' => $title, 'url' => $url, 'eyecatch' => $eyecatch, 'image_src' => '', 'movies' => $movies); } catch (CrawlerException $e) { if ($url !== false) { Logger::addLog($url); } Logger::addLog($e->getMessage()); Logger::addLog($this->plugin->getSiteName() . PHP_EOL); $result = array(); } catch (\Exception $e) { if ($url !== false) { Logger::addLog($url); } Logger::addLog($e->getMessage()); Logger::addLog(Logger::getStackTrace($e) . PHP_EOL); $result = array(); } return $result; }
/** * 指定パスのファイルをS3の指定パスへアップロードする * * @param string $from_path * @param string $to_path * @return void **/ private function _uploadConents($from_path, $to_path) { if (IS_EC2 === false) { return false; } try { $this->S3->upload($from_path, $to_path); } catch (\Exception $e) { Logger::addLog($from_path . ' -> ' . $to_path); Logger::addLog('S3へのアップロードに失敗した' . PHP_EOL); } }
/** * クロール中に発生したエラーログをメール送信する * * @param Exception $e * @return void **/ private function _sendErrorLog($e) { $ses = new Ses(); $ses->setTitle('Crawl Error!'); $ses->setBody(Logger::getStackTrace($e)); $ses->send(); }
/** * ログを追記する * * @param string $text * @return void **/ public static function addLog($text) { $log = Logger::getLog(); $log .= $text . PHP_EOL; Registry::set('log', $log); }