Я использую symfony 2.5, и у меня есть следующая услуга для монолога.symfony2 пустой идентификатор сеанса в службе
<?php
namespace Megogo\CoreBundle;
use Symfony\Component\HttpFoundation\Session\Session;
class SessionRequestProcessor
{
/**
* @var \Symfony\Component\HttpFoundation\Session\Session
*/
protected $session;
/**
* @var
*/
private $token;
public function __construct(Session $session)
{
$this->session = $session;
}
public function processRecord(array $record)
{
if (null === $this->token) {
try {
$this->token = $this->session->getId();
} catch (\RuntimeException $e) {
$this->token = '????????';
}
}
$record['extra']['token'] = $this->token;
return $record;
}
}
service.yml
services:
monolog.formatter.session_request:
class: Monolog\Formatter\LineFormatter
arguments:
- "[%%datetime%%] [%%extra.token%%] %%channel%%.%%level_name%%: %%message%%\n"
monolog.processor.session_request:
class: Megogo\CoreBundle\SessionRequestProcessor
arguments: ["@session"]
tags:
- { name: monolog.processor, method: processRecord }
я пример из официальной документации. Adding a Session/Request Token
У меня проблема, это $this->session->getId()
возвращение пустой строка. Если я добавлю $session->start();
все работает. Я могу получить идентификатор сеанса. Но это странно, потому что в других моих сервисах все работает без этого обходного пути. И когда я делаю app/console cache:clear
у меня есть ошибки Failed to start the session: already started by PHP.
ли вы когда-нибудь решить эту проблему? Мне тоже это нужно –
@JoeYahchouchi Извините, но нет, я не решил :( – denys281