5 class Mem extends \Rsi\Fred\Log\Handler{
13 public function add($prio,$message,$context){
14 if($this->maxSize && (count($this->messages) >= $this->maxSize))
15 $this->messages = array_slice($this->messages,$this->maxSize >> 1);
16 $this->_log->fred->stripObjects($context);
17 $this->messages[] = [
'time' => microtime(
true)] + compact(
'prio',
'message',
'context');
22 if($this->
save) $this->_log->component(
'event')->listen(\
Rsi\Fred::EVENT_HALT,[$this,
'save']);
27 'start' => $this->_log->fred->startTime,
28 'end' => microtime(
true),
29 'file' => $_SERVER[
'REQUEST_URI'] ?? $_SERVER[
'PHP_SELF'] ??
null,
30 'mem' => memory_get_peak_usage(
true),
34 'code' => http_response_code(),
35 'session' => $_SESSION,
39 if($this->_log->fred->has(
'db')){
40 $db = $this->_log->fred->db;
41 $log[
'db'] = [
'count' => $db->queryCount,
'time' => $db->queryTime];
43 if(!$this->filename) $this->filename = \Rsi\File::tempDir() .
'log.dat';
45 $logs = array_slice(\
Rsi\File::unserialize($this->filename,[]) ?: [],1 - $this->
save,
null,
true);
46 $logs[$temp = \Rsi\Str::random()] = $log;
47 \Rsi\File::serialize($temp = $this->filename . $temp,$logs,$this->mode);
48 rename($temp,$this->filename);
51 \Rsi\File::unlink($this->filename);
52 $this->_log->component(
'log')->error($e);