Beispiel #1
0
 static function reportError($oException, $nErrorNumber = null)
 {
     if (AnwComponent::globalCfgReportFileEnabled() || AnwComponent::globalCfgReportMailEnabled()) {
         if (!$nErrorNumber) {
             $nErrorNumber = time();
         }
         $sExceptionName = get_class($oException);
         $sExceptionMessage = $oException->getMessage();
         self::log("=== exception " . $sExceptionName . " - logged as error #" . $nErrorNumber . " : " . $sExceptionMessage);
         self::endLog();
         $sLoggedStr = "\n\n";
         $sLoggedStr .= "********* BEGIN ERROR LOG #" . $nErrorNumber . "*********\n";
         $sLoggedStr .= "Date : " . date("Y-m-d H:i:s") . "\n";
         $sLoggedStr .= "Exception : " . $sExceptionName . "\n";
         $sLoggedStr .= "Message : " . $sExceptionMessage . "\n";
         $sLoggedStr .= "Stack trace below :\n";
         $sLoggedStr .= " * File " . $oException->getFile() . ", line " . $oException->getLine() . "\n";
         $asTrace = $oException->getTrace();
         foreach ($asTrace as $sTrace) {
             $sLoggedStr .= ' * ';
             if (isset($sTrace['class'])) {
                 $sLoggedStr .= $sTrace['class'];
             }
             if (isset($sTrace['type'])) {
                 $sLoggedStr .= $sTrace['type'];
             }
             $sLoggedStr .= $sTrace['function'];
             //hide args for security reasons
             if (is_array(@$sTrace['args'])) {
                 foreach ($sTrace['args'] as $i => $sArg) {
                     $sTrace['args'][$i] = 'p' . ($i + 1);
                     //$sTrace['args'][$i] = serialize($sArg);
                 }
                 $sLoggedStr .= '(' . implode($sTrace['args'], ", ") . ') - ';
             }
             $sLoggedStr .= 'File ' . @$sTrace['file'] . ', line ' . @$sTrace['line'];
             $sLoggedStr .= "\n";
         }
         $sLoggedStr .= "Execution log below :\n\n";
         $sLoggedStr .= implode("\n", self::$log) . "\n";
         $sLoggedStr .= "********* END ERROR LOG #" . $nErrorNumber . " *********\n";
         if (AnwComponent::globalCfgReportFileEnabled()) {
             try {
                 AnwUtils::file_put_contents(ANWPATH_ERRORLOG, $sLoggedStr, LOCK_EX | FILE_APPEND);
             } catch (AnwException $e) {
             }
         }
         if (AnwComponent::globalCfgReportMailEnabled()) {
             $sSubject = AnwComponent::g_("err_mailreport_subject", array("errornumber" => $nErrorNumber));
             $sBody = AnwComponent::g_("err_mailreport_body", array("website" => AnwComponent::globalCfgWebsiteName()));
             $sBody .= "\n\n" . $sLoggedStr;
             $asEmail = AnwComponent::globalCfgReportMailAddresses();
             foreach ($asEmail as $sEmail) {
                 AnwUtils::mail($sEmail, $sSubject, $sBody);
             }
         }
         return $nErrorNumber;
     }
     return false;
 }