Как мне узнать время из сообщения Monolog? - PullRequest
0 голосов
/ 18 декабря 2018

Я добавил Monolog v.1.24.0 в свой проект.

Создайте регистратор:

$logger = new Logger('db');
$logger->setTimezone(DateTime::getTimezone()); 
$logger->pushHandler(new StreamHandler(ROOT.'/log/db.log', Logger::DEBUG, 600));

Теперь, в какой-то момент позже в коде я создаю сообщение и отправляю егобраузер:

// $result contains my array
$tmp = \json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION | JSON_UNESCAPED_SLASHES);
echo $tmp;
$logger->notice($tmp);

Моя проблема в том, что я хочу извлечь информацию о времени, содержащуюся в журнале, хранящемся в db.log, и включить в него информацию, отраженную для пользователя.

Как это возможно??

PS: Я могу сам построить время, но тогда лучше удалить весь проект Monolog и использовать свой собственный!

1 Ответ

0 голосов
/ 19 декабря 2018

Вы пытаетесь использовать монолог и, как правило, регистратор PSR-3 для чего-то, что не предназначено для такого использования ...

Что происходит внутри монолога или, более конкретно, в этом случае склиент PSR-3 выходит за рамки того, чего вы пытаетесь достичь.Скорее всего, ваш бизнес-домен говорит, что вам нужно сохранить запись для действия, которое совершил пользователь. Затем сделайте это. Он не говорит о том, что вы хотите войти в систему, или если он говорит, что вам нужно зарегистрировать эти дване следует смешивать.

Более того, вам не следует смешивать то, что монолог делает внутри, с тем, что вам нужно отобразить пользователю.

Таким образом, в конечном итоге решение будет таким:

// $result contains my array
$tmp = \json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION | JSON_UNESCAPED_SLASHES);
echo $tmp;

//
// write here custom code that saves my $msg where ever I need to and that it contains also the timestamp
//

// Then come here and log that my record is saved..
$logger->notice('Record is saved');

Вы должны понимать, что логгер является абстрактным слоем для LOGGING .. Вы нарушаете принцип Лискова SOLID ... Что произойдет, если в будущем вы удалите DB / Stream Handler из своего монолога?И замените его другим, у которого нет метки времени.

Ваш код не удастся выполнить.

...