Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- monolog.processor.request_introspection:
- class: Workins\MainBundle\Monolog\RequestIntrospectionProcessor
- calls:
- - [setRequest, ['@?request=']] # note: use request_stack for symfony >= 2.4
- - [setSession, [@session]]
- - [setEnv, [%kernel.environment%]]
- # optionally pass the different key for other firewall
- # - [setSecurityKey, ['blahblah']]
- tags:
- - { name: monolog.processor }
- <?php
- namespace Workins\MainBundle\Monolog;
- use Monolog\Processor\IntrospectionProcessor;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Session\Session;
- /**
- * Добавляет данные о запросе и сессии.
- */
- class RequestIntrospectionProcessor extends IntrospectionProcessor
- {
- /**
- * @var string
- */
- private $securityKey = '_security_main';
- /**
- * @var Session
- */
- private $session;
- /**
- * @var Request
- */
- private $request;
- /**
- * @var string
- */
- private $env;
- /**
- * {@inheritdoc}
- */
- public function __invoke(array $record)
- {
- if ($this->env !== 'prod') {
- return $record;
- }
- $record = parent::__invoke($record);
- $requestData = array();
- if (!is_null($this->request)) {
- $requestData['request'] = array(
- 'uri' => $this->request->getRequestUri(),
- 'method' => $this->request->getMethod(),
- 'headers' => $this->request->headers->all(),
- );
- }
- if (!is_null($this->session)) {
- $requestData['session'] = array(
- 'id' => $this->session->getId(),
- );
- if ($this->session->has($this->securityKey)) {
- $token = unserialize($this->session->get($this->securityKey));
- $user = $token->getUser();
- if (!is_null($user)) {
- $requestData['session']['user'] = $user->getId();
- }
- }
- }
- $record['extra']['request'] = $requestData;
- return $record;
- }
- /**
- * @param Session $session
- */
- public function setSession(Session $session = null)
- {
- $this->session = $session;
- }
- /**
- * @param Request $request
- */
- public function setRequest(Request $request = null)
- {
- $this->request = $request;
- }
- /**
- * @param string $securityKey
- */
- public function setSecurityKey($securityKey)
- {
- $this->securityKey = $securityKey;
- }
- /**
- * @param string $env
- */
- public function setEnv($env)
- {
- $this->env = $env;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement