php - 有没有办法使用 Monolog 获得美化的日志条目?
问题描述
现在我的代码如下所示:
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)));
解决方案
由于版本2.0.0
theMonolog\Formatter\JsonFormatter
或任何扩展的格式化程序Monolog\Formatter\NormalizerFormatter
通过setJsonPrettyPrint()
$formatter = new JsonFormatter();
$formatter->setJsonPrettyPrint(true);
如果需要,还有一个更通用的 JSON 编码选项
$formatter->addJsonEncodeOption($option);
推荐阅读
- javascript - 根据湿度获取十六进制颜色
- java - 带参数的href不调用控制器
- jquery - 列表中的按钮仅适用于第一行数据,单击按钮时如何从每一行获取数据?
- css - 如何导入 Ant Design React UI 库和 css?
- triggers - Azure Function BlobTrigger 触发,但未找到 blob
- angular - HttpClient在服务中使用时在Angular中抛出错误
- python - 为什么 Panda 的 df.apply 在按原样返回行时比预期的多调用一次?
- javascript - 如何在 .animate 命令期间暂时禁用悬停?
- typescript - 订阅推送通知服务后添加管道
- r - 如何从 POSIXct 范围子集 POSIXct