Beispiel #1
0
 /**
  * @return BaseLogger
  **/
 public final function logRecord(LogRecord $record)
 {
     $levelMatches = $this->level === null || $record->getLevel()->getId() <= $this->level->getId();
     if ($levelMatches && $this->isLoggable($record)) {
         $this->publish($record);
     }
     return $this;
 }
 /**
  * @param LogRecord $logRecord
  * @return string
  */
 public function format($logRecord)
 {
     $time = $logRecord->getTime();
     $result = $time->format('Y-m-d H:i:s') . ' [' . LogLevel::getName($logRecord->getLevel()) . '] ' . getmypid();
     $message = (string) $logRecord->getMessage();
     if ($message !== '') {
         $result .= ' | ' . str_replace("\n", "\n  ", $message);
     }
     return $result . PHP_EOL;
 }
Beispiel #3
0
 /**
  * @param  string
  * @param  int
  * @return bool  If the message should be passed on to the next filter or to the log handler.
  * @throws Exception
  */
 public function filter(LogRecord $rec)
 {
     // dont't filter?
     if ($rec->getLevel() < $this->conf['level'] || cdCtx('cli_debug')) {
         return true;
     }
     // get group
     $group = '?';
     if (($id = @posix_getegid()) !== false) {
         if (($id = @posix_getgrgid($id)) !== false) {
             $group = $id['name'];
         }
     }
     // Date & Level
     $msg = 'Time:       ' . $rec->getTimeFormat() . "\n" . 'Group:User: '******':' . cdUser() . "\n" . 'CWD:        ' . getcwd() . "\n" . 'Level:      ' . $rec->getLevelName() . "\n";
     // Prefix
     $prefix = $rec->getPrefix();
     if ($prefix) {
         $msg .= "Log Prefix: {$prefix}\n";
     } else {
         $prefix = 'main';
     }
     $msg .= "\n";
     // Message
     if ($rec->getThrown()) {
         $msg .= ABException::format($rec->getThrown(), true, false);
     }
     if ($rec->getMessage()) {
         $msg .= $rec->getMessage();
     }
     // Email headers
     $headers = 'From: ' . $this->conf['from'] . "\r\nX-Mailer: contentd/" . cdVersion();
     // Subject
     // %e = exception name, %l = log level, %j = job name
     $logLevelName = ucfirst(trim(strtolower($rec->getLevelName())));
     $subject = strtr($this->conf['subject'], array('%e' => $rec->getThrown() ? get_class($rec->getThrown()) : $logLevelName, '%l' => $logLevelName, '%j' => $prefix));
     // Action
     if (!mail($this->conf['to'], $subject, $msg, $headers)) {
         $rec->setMessage($rec->getMessage() . '. Additionaly, the Mail log filter failed to mail "' . $this->conf['to'] . '"');
     }
     return true;
 }
Beispiel #4
0
 /**
  * Passes the \TYPO3\CMS\Core\Log\LogRecord to all registered writers.
  *
  * @param \TYPO3\CMS\Core\Log\LogRecord $record
  * @return void
  */
 protected function writeLog(LogRecord $record)
 {
     if (!empty($this->writers[$record->getLevel()])) {
         foreach ($this->writers[$record->getLevel()] as $writer) {
             $writer->writeLog($record);
         }
     }
 }
Beispiel #5
0
 /**
  * Called upon to store (INSERT) a log record into the database.
  *
  * Normally called upon by the <samp>filter</samp> method after
  * figuring out a record should be logged.
  *
  * @param  LogRecord
  * @param  string    A preformatted message, compiled by the <samp>filter</samp> 
  *                   method, containing <samp>$record->getMessage()</samp> and/or 
  *                   <samp>ABException::format($record->getThrown())</samp>
  * @return void
  * @throws SQLiteException
  */
 public function insertRecord(LogRecord $rec, $formattedMessage)
 {
     # compile final sql
     $sql = $this->insertSQL;
     foreach ($this->parameters['db.columns'] as $col) {
         if ($col == 'time') {
             $sql .= $rec->getTime();
         } elseif ($col == 'level') {
             $sql .= $rec->getLevel();
         } elseif ($col == 'prefix') {
             $sql .= "'" . sqlite_escape_string($rec->getPrefix()) . "'";
         } elseif ($col == 'message') {
             $sql .= "'" . sqlite_escape_string($formattedMessage) . "'";
         } elseif ($col == 'cwd') {
             $sql .= "'" . sqlite_escape_string(getcwd()) . "'";
         } else {
             continue;
         }
         $sql .= ',';
     }
     $sql = trim($sql, ',') . ');';
     $this->run($sql);
 }
Beispiel #6
0
 /**
  * @param  LogRecord
  * @return bool  If false, the filter chain will break
  * @throws Exception
  */
 public function filter(LogRecord $rec)
 {
     // dont't filter?
     if ($rec->getLevel() < $this->parameters['level'] || cdCtx('cli_debug')) {
         return true;
     }
     // Message
     $msg = '';
     if ($rec->getMessage()) {
         $msg .= $rec->getMessage() . "\n";
     }
     if ($rec->getThrown()) {
         $msg .= ABException::format($rec->getThrown(), true, false);
     }
     $msg = trim($msg);
     // forward
     $this->insertRecord($rec, $msg);
     return true;
 }
Beispiel #7
0
 /**
  * Forward a message to the current <samp>{@link LogHandler}</samp>
  *
  * If <samp>$msg</samp> is an <samp>object</samp>, it will be converted to a string 
  * using $obj->__toString()</samp>. If <samp>$msg</samp> is an <samp>Exception</samp>,
  * it will be converted to a string using <samp>ABException::format($e)</samp>. However,
  * this is done by the LogHandler, so these are more or less guidelines than rules.
  *
  * @param  LogRecord
  * @return void
  */
 public function log(LogRecord $rec)
 {
     if ($this->handler != null) {
         // don't log?
         if ($rec->getLevel() < $this->level) {
             return;
         }
         // Filter
         foreach ($this->filters as $filter) {
             try {
                 if (!$filter->filter($rec)) {
                     return;
                 }
             } catch (Exception $e) {
                 $rec->setMessage($rec->getMessage() . ' [LogFilterException in ' . get_class($filter) . '->filter(): ' . $e->getMessage() . '] ');
             }
         }
         // Publish
         $this->handler->publish($rec);
     }
 }