у меня возникли некоторые проблемы с классом / интерфейсом AbstractWriter.
Идея заключалась в том, чтобы написать функцию журнала, которая отправляет мне журналы по электронной почте после вызова импортера.
Командная функция импортера записывает логи.
Класс выглядит так:
<?php
namespace my_site_package\Importer\Log\Writer;
use TYPO3\CMS\Core\Log\LogRecord;
use TYPO3\CMS\Core\Log\Writer\AbstractWriter;
use TYPO3\CMS\Core\SingletonInterface;
class MailWriter extends AbstractWriter implements SingletonInterface
{
protected $buffer = [];
protected $mail;
/**
* @return mixed
*/
public function getMail()
{
return $this->mail;
}
/**
* @param mixed $mail
*/
public function setMail($mail)
{
$this->mail = $mail;
}
/**
* Writes the log record
*
* @param LogRecord $record Log record
* @return \TYPO3\CMS\Core\Log\Writer\WriterInterface $this
* @throws \RuntimeException
*/
public function writeLog(LogRecord $record)
{
var_dump('writeLog');
$data = '';
$recordData = $record->getData();
if (!empty($recordData)) {
if (isset($recordData['exception']) && $recordData['exception'] instanceof \Exception) {
$recordData['exception'] = (string)$recordData['exception'];
}
$data = '- ' . json_encode($recordData);
}
$this->buffer[] = $record->getMessage() . $data;
return $this;
}
function __destruct()
{
error_log('MailWriter');
if ($this->getMail() === null) {
return;
}
/** @var \TYPO3\CMS\Core\Mail\MailMessage $message */
$message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage');
$message->setTo($this->getMail())
->setFrom($this->getMail())
->setSubject('Importer Output');
$message->setBody(implode("<br/>", $this->buffer), 'text/html');
$message->send();
}
}
Задача ещё не решена.
Других решений пока нет …