如果检查记录器接口(

https://github.com/php-fig/log/blob/master/Psr/Log/LoggerInterface.php),您将看到所有记录方法都以字符串形式显示消息,因此当您尝试使用字符串以外的变量类型进行记录时会收到警告.

我尝试使用处理器以自定义方式格式化阵列,但正如预期的那样,在将变量发送到logger接口后会触发处理器.

记录数组的最脏的方法可能是您选择的任何一种方法;

$logger->info(json_encode($array));

$logger->info(print_r($array, true));

$logger->info(var_export($array, true));

另一方面,您可能希望在单个proccessor中格式化数组,以使用DRY原则集中格式化逻辑.

Json编码数组 – >发送为Json字符串 – > json解码为数组 – >格式 – > json再次编码

CustomRequestProcessor.php

namespace Acme\WebBundle;

class CustomRequestProcessor

{

public function __construct()

{

}

public function processRecord(array $record)

{

try {

//parse json as object and cast to array

$array = (array)json_decode($record['message']);

if(!is_null($array)) {

//format your message with your desired logic

ksort($array);

$record['message'] = json_encode($array);

}

} catch(\Exception $e) {

echo $e->getMessage();

}

return $record;

}

}

在config.yml或services.yml中注册请求处理器,请参阅tags节点以注册自定义通道的处理器.

services:

monolog.formatter.session_request:

class: Monolog\Formatter\LineFormatter

arguments:

- "[%%datetime%%] %%channel%%.%%level_name%%: %%message%%\n"

monolog.processor.session_request:

class: Acme\WebBundle\CustomRequestProcessor

arguments: []

tags:

- { name: monolog.processor, method: processRecord, channel: testchannel }

并在控制器中将您的数组记录为json字符串,

namespace Acme\WebBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller

{

public function indexAction()

{

$logger = $this->get('monolog.logger.testchannel');

$array = array(3=>"hello" , 1=>"world", 2=>"sf2");

$logger->info(json_encode($array));

return $this->render('AcmeWebBundle:Default:index.html.twig');

}

}

现在,您可以根据需要在中央请求处理器中格式化和记录阵列,而无需在每个控制器中对阵列进行排序/格式化/行走.

php monolog 使用,php – 使用Monolog记录整个数组相关推荐

  1. php日志 monolog,Laravel 集成的 Monolog 库对日志进行配置和记录实例

    本文章为各位介绍一篇关于Laravel 集成的 Monolog 库对日志进行配置和记录的实例,具体的如下希望对各位吸帮助. 对于大型系统而言,日志是不可或缺的模块,Laravel自然也对日志提供了完善 ...

  2. SQL记录-PLSQL数组

    PL/SQL数组 PL/SQL程序设计语言提供叫一种叫做VARRAY的数据结构,其可存储相同类型元素的一个固定大小的连续集合.VARRAY用于存储数据的有序集合,但它往往是更加有用认为数组作为相同类型 ...

  3. 取多条记录时报数组越界异常_9D sp1使用DMap出图报数组越界异常

    根据提供的截图信息无法定位是哪个环节的问题,可以提供一份示例代码给你参考,看看能否正常出图. def mapToPng(): Unit = { val map = new DMap() val wsP ...

  4. 【发际线大作战】C++学习记录之数组(发际线-1cm)

    ciao~ 我又来了惹 基于这周的学习情况 先开个坑 慢慢填(龇牙笑的表情我可太爱了) 今天刚学到一个新知识点 C/C++中从来没有定义过void main(). C++之父Bjarne Strous ...

  5. (JavaScript学习记录):数组

    写在前面:参考哔哩哔哩黑马程序员pink老师教程 地址:https://www.bilibili.com/video/BV1Sy4y1C7ha?t=41&p=4 目录 数组的概念 创建数组 数 ...

  6. laravel接合monolog实现日志记录到Elasticsearch实践

    需求 记录所有前台用户请求返回数据到ES 实践 引用拓展包 $ composer require ruflin/elastica: ^5.0 ruflin/elastica 拓展包说明 Elastic ...

  7. tp5使用monolog_使用Monolog记录:从Devtools到Slack

    tp5使用monolog Logging is an important part of the app development/maintenance cycle. It's not just ab ...

  8. PHP日志记录工具Monolog

    github地址:https://github.com/Seldaek/monolog 使用 Monolog 安装 核心概念 日志级别 配置一个日志服务 为记录添加额外的数据 使用通道 自定义日志格式 ...

  9. php日志,monolog - PHP 日志神器

    monolog - PHP 日志神器 monolog - PHP 日志神器 Monolog 发送你的日志到文件.到sockets.到邮箱.到数据库或(和)者其他网路存储服务(云).这里用了或与和,因为 ...

最新文章

  1. 验证和训练loss和acc多种情况分析
  2. 【深夜思考】java百度云资源
  3. Makefile 中:= ?= += =的区别
  4. LeetCode Construct the Rectangle
  5. 扎心了,程序员2017到2019经历了什么?
  6. 轻拢慢捻,微服务熔断大总管
  7. python输出玫瑰花_如何用python画玫瑰花
  8. 2017.10.13 轮状病毒 失败总结
  9. C语言编译php环境,vscode中C语言编译环境的配置方法(分享)
  10. php 下载的官方扩展 没有configure文件解决办法
  11. Flutter之RenderObjectWidget
  12. Qt echarts 教程(3):qml echarts 的使用方法
  13. 功率放大器的设计要点
  14. c语言__100以内的奇数
  15. java二重积分_用java实现二重积分的计算
  16. ReentrantLock加锁解锁线程入队源码分析
  17. PMOS的电流方向以及工作区理解
  18. 2022讯飞——糖尿病遗传风险检测挑战赛解决方案
  19. 将数字编号翻译为英文编号(python)实现
  20. HTTP请求服务器 statuscode的状态码说明 (statuscode==500)

热门文章

  1. 使用WDK的ChkINF工具验证INF文件语法
  2. 分页+frament+PullToRefresh+轮播
  3. Terraform 基础 开发环境配置
  4. 【问】启动SQL服务管理器时提示SQL Server could not find
  5. 多商户商城系统功能拆解38讲-平台端营销-砍价商品
  6. OpenCv 入门 -- 对小猪佩琪进行平滑处理
  7. svg可爱仙人掌卡通代码
  8. 诸葛亮军事上最大的本事就是打败仗
  9. 魅族18设置呼吸灯教程
  10. HMS的华为天际通出境服务还不错