duanji9311 2015-12-13 20:19
浏览 41
已采纳

Symfony 2 - 登录服务

novice to symfony so please point anything out obvious :)

I have a service that sends push notifications. I am trying to pass a logging obj to that service so that i can write to the main log handler. bottom line is this does not write anywhere and i have no idea where i've gone wrong.

I took some things out of my code but this is generally the idea.

blah\CoreBundle\Service\PushTask.php

public function __construct(
   \Doctrine\ORM\EntityManager $entityManager,
    $logger
) {
    $this->entityManager = $entityManager;
    $this->logger = $logger;
}
...
public function pushSomething() 
{
    $this->logger->addInfo('test');   // not writing
}

config_dev.yml

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: info

blah\CoreBundle\Resources\config\services.xml

<service id="civix_core.push" class="blah\CoreBundle\Service\PushTask">
        <argument type="service" id="doctrine.orm.entity_manager" />
        <argument type="service" id="logger" />
</service>
  • 写回答

3条回答 默认 最新

  • dongmei8071 2015-12-14 14:51
    关注

    The complete stack you can use following your example:

    blah\CoreBundle\Service\PushTask.php

    /**
     * @var LoggerInterface
     */
    private $logger;
    
    public function __construct(
       \Doctrine\ORM\EntityManager $entityManager,
        LoggerInterface $logger
    ) {
        $this->entityManager = $entityManager;
        $this->logger = $logger;
    }
    ...
    public function pushSomething() 
    {
        $this->logger->info('test');
    }
    

    config.yml

    monolog:
      channels:
        - your_new_channel
      handlers:
        // just keep it or add a new handler like:
        your_handler:
          type:   stream
          path:   "%kernel.logs_dir%/%kernel.environment%_new_channel.log"
          level:  info
          channels: ["your_new_channel"]
    

    blah\CoreBundle\Resources\config\services.xml

    <service id="civix_core.push" class="blah\CoreBundle\Service\PushTask">
            <argument type="service" id="doctrine.orm.entity_manager" />
            <argument type="service" id="monolog.logger.your_new_channel" />
    </service>
    

    Go check the file: dev_new_channel.log

    You can also clear your cache after doing this in order to make sure all the yml/xml changes are in place!

    Why is this my suggestion? Using channel and handlers will help you maintain your log organized and with easy changes!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序