有没有办法使用Monolog获得美化日志条目?

时间:2018-05-22 14:14:07

标签: php logging monolog

现在我的代码看起来像这样:

JsonFormatter

结果我有一行日志条目。我尝试使用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))); ,但只是格式化数据结构并继续打印单行记录,当我想要几行人类可读美化的数据表示时。

更新

我后来找到了解决方案。 Symfony2 - How to log multiline entries with monolog?对我而言,它看起来像这样:

com.google.common.collect.Streams#concat

2 个答案:

答案 0 :(得分:0)

您可以将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/

答案 1 :(得分:0)

自版本 Get-ChildItem -Path 'C:\check\two' -Filter '*.txt' -File -Recurse | Select-String -Pattern "http://" | Select-Object -Property Path,LineNumber,Line | Export-Csv -Path 'C:\check\ResultFile.csv' -NoTypeInformation 起,2.0.0 或任何扩展 Monolog\Formatter\JsonFormatter 的格式化程序都通过 Monolog\Formatter\NormalizerFormatter

支持此功能
setJsonPrettyPrint()

如果需要,还有一个更通用的 JSON 编码选项

$formatter = new JsonFormatter();
$formatter->setJsonPrettyPrint(true);