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条)

报告相同问题?