我正在使用 rollbar.com 收集有关 symfony2 应用程序中异常的所有详细信息。但是我不明白如何配置 monolog,以便它将用户名和用户 ID 传递给 rollbar。
我看到我可以通过rollbar config如图here我认为 person_fn
就是我所需要的。我仍然不知道将该函数放在哪里(这应该处于服务状态,因为我需要检查安全 token )以及如何将其传递给rollbar。
# config_prod.yml
rollbar:
type: rollbar
level: error
token: %rollbar_token%
config:
person_fn: getUserForRollbarRightAboutNowOrSomething
最佳答案
找到解决方案:
- 将 monolog/monolog 包更新至至少 1.17.0 版本。
创建ContextProcessor并更新用户信息
#src/AppBundle/Monolog/RollbarContextProcessor namespace AppBundle\Monolog; use AppBundle\Entity\User; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class RollbarContextProcessor { private $tokenStorage; public function __construct(TokenStorageInterface $tokenStorage) { $this->tokenStorage = $tokenStorage; } public function processRecord($record) { if ($this->tokenStorage->getToken()) { $user = $this->tokenStorage->getToken()->getUser(); if ($user instanceof User) { $record['context']['payload']['person'] = [ 'id' => $user->getId(), 'username' => $user->getUsername(), 'email' => $user->getEmail(), ]; } } return $record; } }
使用
monolog.processor
标记将 ContextProcessor 配置为服务。# app/config/config_prod.yml services: monolog.processor.rollbar_context: class: AppBundle\Monolog\RollbarContextProcessor arguments: [@security.token_storage] tags: - { name: monolog.processor, method: processRecord, handler: rollbar } monolog: handlers: rollbar: type: rollbar level: error token: %rollbar_token%
关于symfony - 如何通过 monolog、symfony2 将用户名传递给滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33515541/