1

我正在使用 rollbar.com 收集有关 symfony2 应用程序中异常的所有详细信息。但是我不明白如何配置独白,以便它将用户名和用户 ID 传递给滚动条。

我看到我可以通过如图所示滚动条配置,我想这就是我需要的。我仍然不知道把这个函数放在哪里(这应该在服务中,因为我需要检查安全令牌)以及如何将它传递给 rollbar。person_fn

# config_prod.yml
rollbar:
    type: rollbar
    level: error
    token: %rollbar_token%
    config:
        person_fn: getUserForRollbarRightAboutNowOrSomething
4

2 回答 2

3

找到解决方案:

  • 将 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;
        }
    }
    
  • 将 ContextProcessor 配置为带有monolog.processor标签的服务。

    # 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%
    
于 2015-11-04T20:35:30.050 回答
1

你的问题有两个部分:

防滚架

person_fn正是您所需要的。您应该能够通过使用字符串(例如:"MyClass::static_function_reference""my_function_name")来添加对函数的引用。

Symfony

免责声明:我对 Symfony 的使用或了解不多。

这个问题有一些很好的例子来说明如何在 Symfony 中获取当前用户。(打孔线:在控制器中,您可以调用$this.getUser()

这个问题有一个很好的例子来说明如何在服务中注入当前用户。SecurityContext(制作一个依赖于or的 Twig 扩展TokenStorage,使用这些依赖项来获取用户对象)。

最后,还有经典的 PHP 动作:只要有用户将其添加到$_REQUEST. 我不确定 Symfony 是否选择了这个,但它在非框架 PHP 应用程序中是一种有效的方式。

于 2015-11-04T13:30:10.530 回答