【问题标题】:Write logs in symfony using Monolog使用 Monolog 在 symfony 中写入日志
【发布时间】:2015-05-06 20:02:24
【问题描述】:

我的项目有问题,我想用 Monolog 写日志,但我做不到。 所以,我创建了一个服务:

services:
 my_logger:
  class: Monolog\Logger
  arguments: [Debug]
  calls:
    - [pushHandler, [@my_log_handler]]

 my_log_handler:
   class: Monolog\Handler\StreamHandler
   arguments: [/home/vagrant/Workspace/symfony/app/logs/test.log, 100]

我的控制器:

    $em = $this->getDoctrine()->getManager();
    $categories = $em->getRepository('EnsJobeetBundle:Category')->getWithJobs();

如果我写:

$logger = $this->get('my_logger');
$logger->info('Test log');

日志被插入到 test.log 中

如果我写:

$logger = $this->get('my_logger');
$logger->info(print_r($categories,true));

日志不写。我收到错误 500。 请帮我。提前谢谢!!! 错误:

2015/03/05 12:58:48 [error] 4698#0: *76 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Allowed memory size of 536870912 bytes exhausted (tried to allocate 532676608 bytes) 


PHP message: PHP   8. print_r() /home/vagrant/Workspace/symfony/src/Ens  /JobeetBundle/Controller/JobController.php:34" while reading response header  from upstream, client: 10.0.2.2, server: symfony.md, request: "GET
/job/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "symfony.dev:8000"

【问题讨论】:

  • 你的服务器日志说什么?你应该有关于错误的详细信息。
  • 日志中的错误是:允许的内存大小为 536870912 字节已用尽,我尝试在 php.ini 中增大此内存,但问题仍然存在
  • 你能编辑你的问题并添加一些日志行吗?
  • 尝试不使用 print_r 功能进行记录。你还有内存问题吗?
  • 没有 print_r 不起作用我得到:“注意:数组到字符串的转换”

标签: php symfony logging symfony-2.3 monolog


【解决方案1】:

您在尝试处理数组时内存不足。这可能有很多原因,也许它太大了,也许它有递归方面,等等。

使用它时的一个好技巧是只打印密钥。您将看到更少的数据,但您超出内存限制的可能性要小得多。当您查看阵列时,您可以在查看键后打印它的特定部分。试试这个:

$logger = $this->get('my_logger');
$logger->info(print_r(array_keys($categories),true));

你的另一种选择,如果你真的需要查看整个数组,它会增加你在 php.ini 中的内存限制。寻找这样的一行来改变它们:

memory_limit = 128MB

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 2019-08-07
    • 1970-01-01
    • 2015-03-24
    • 2023-03-11
    • 2019-11-02
    • 1970-01-01
    • 2018-09-27
    • 2019-09-02
    相关资源
    最近更新 更多