public static function log($code, $message, $file, $line) { $app = \Rebond\App::instance(); $d = new \DateTime(); $message = self::textify($message); if ($app->step() != \Rebond\Config::STEP_RUNNING) { $log = \Rebond\Config::getPath('log') . 'log.txt'; $file = str_replace(FULL_PATH, '/', str_replace('\\', '/', $file)); $trace = stripos($file, 'SplClassLoader') !== false ? self::textify(debug_backtrace()) : ''; // date # code # message # trace # file # line $message = $d->format('Y-m-d H:i:s') . '#' . Error::value($code) . '#' . str_replace(FULL_PATH, '/', $message) . '#' . $trace . '#' . $file . '#' . $line . PHP_EOL; \Rebond\Util\File::save($log, 'a', $message); } else { if (!in_array($code, [Error::LANG_NOT_FOUND, Error::PAGE_NOT_FOUND]) && $app->env() == \Rebond\Config::ENV_PROD && $app->site()->getSendMailOnError()) { $emails = $app->site()->getMailListOnError(); if ($emails != '') { $emails = explode(',', $emails); \Rebond\App\Error\Mail::error($app->site()->getTitle(), $emails, $code, $message, $file, $line); } } $log = null; if ($code == Error::LANG_NOT_FOUND) { $options = []; $options['where'][] = ['log.request_uri = ?', $_SERVER['REQUEST_URI']]; $options['where'][] = ['log.message = ?', $message]; $log = \Rebond\Core\Log\Data::load($options); } if (!isset($log)) { $log = new \Rebond\Core\Log\Model(); $log->setCode($code); $log->setMessage($message); $log->setRequestUri($_SERVER['REQUEST_URI']); } $log->setUserId($app->userId()); $log->setFile($file); $log->setLine($line); $log->setTrace(self::textify(debug_backtrace())); $log->setIp($_SERVER['REMOTE_ADDR']); $log->setReferer(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''); return $log->save(); } return 0; }
protected static function mapper(array $row, $alias = 'log') { $model = new \Rebond\Core\Log\Model(false); if (isset($row[$alias . 'Id'])) { $model->setId($row[$alias . 'Id']); } if (isset($row[$alias . 'Code'])) { $model->setCode($row[$alias . 'Code']); } if (isset($row[$alias . 'UserId'])) { $model->setUserId($row[$alias . 'UserId']); $model->setUser(\Rebond\Core\User\Data::join($row, $alias . '_user')); } if (isset($row[$alias . 'Ip'])) { $model->setIp($row[$alias . 'Ip']); } if (isset($row[$alias . 'RequestUri'])) { $model->setRequestUri($row[$alias . 'RequestUri']); } if (isset($row[$alias . 'Referer'])) { $model->setReferer($row[$alias . 'Referer']); } if (isset($row[$alias . 'Message'])) { $model->setMessage($row[$alias . 'Message']); } if (isset($row[$alias . 'Trace'])) { $model->setTrace($row[$alias . 'Trace']); } if (isset($row[$alias . 'File'])) { $model->setFile($row[$alias . 'File']); } if (isset($row[$alias . 'Line'])) { $model->setLine($row[$alias . 'Line']); } if (isset($row[$alias . 'Status'])) { $model->setStatus($row[$alias . 'Status']); } if (isset($row[$alias . 'CreatedDate'])) { $model->setCreatedDate($row[$alias . 'CreatedDate']); } if (isset($row[$alias . 'ModifiedDate'])) { $model->setModifiedDate($row[$alias . 'ModifiedDate']); } return $model; }