Есть ли способ получить изящную запись в журнале, используя Monolog? - PullRequest
0 голосов
/ 22 мая 2018

Теперь мой код выглядит так:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$ipAddress = GeoIp\Manager::getRealIp();
$geoResult = GeoIp\Manager::getDataResult($ipAddress, 'ru');

$logger = new Logger('Debug');
$logger->pushHandler(new StreamHandler($_SERVER['DOCUMENT_ROOT'].'/logs/geo.log', Logger::DEBUG));
$logger->info('Location:', array('object' => print_r($geoResult, true)));

В результате у меня есть однострочная запись в журнале.Я пытался использовать JsonFormatter, но он просто форматирует структуру данных и продолжает печатать однострочные записи, когда мне нужно несколько строк удобочитаемых для человека украшенных представлений данных.

ОБНОВЛЕНИЕ:

Я нашел решение здесь позже. Symfony2 - Как регистрировать многострочные записи с монологом? А для меня это выглядит так:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\LineFormatter;

$ipAddress = GeoIp\Manager::getRealIp();
$geoResult = GeoIp\Manager::getDataResult($ipAddress, 'ru');

$formatter = new LineFormatter(null, null, true);

$stream = new StreamHandler($_SERVER['DOCUMENT_ROOT'].'/logs/geo.log', Logger::DEBUG);
$stream->setFormatter($formatter);

$logger = new Logger('Debug');
$logger->pushHandler($stream);
$logger->info('Location:', array('object' => print_r($geoResult, true)));

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете использовать json_encode с плоской JSON_PRETTY_PRINT следующим образом: -

$beautifiedJsonObjectString = json_encode($data, JSON_PRETTY_PRINT);
// now you can use the formatted objected as you like

Ссылка: https://www.daveperrett.com/articles/2008/03/11/format-json-with-php/

...