symfony - 如何通过 monolog、symfony2 将用户名传递给滚动条

标签 symfony monolog rollbar

我正在使用 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/

相关文章:

php - Spaceless 不想在 Symfony2 Twig 模板中正常工作

php - heroku 上的 cURL 超时

python - 如何忽略Rollbar中的404异常?

ruby-on-rails - Rollbar 忽略 ActiveRecord::RecordNotFound 异常

php - 在Monolog ErrorHandler中设置最小的PHP错误报告

elixir - 如何在 case 语句或 Controller 中使用 __STACKTRACE__

symfony - 为什么 symfony 2 同时使用 'deps' 文件和 'composer.json' 文件?

php - Symfony2 形式 : set default options depending on form value

php - 内存泄漏symfony和独白和控制台

php - 具有通用类的独白实现