【问题标题】:I can't add sentry to php slim我无法将哨兵添加到 php slim
【发布时间】:2023-03-17 16:33:01
【问题描述】:

我需要将 php sentry 错误处理程序添加到我的 slim 3 项目中。 我该怎么做? 应该把哨兵集成代码放在哪里? 我现在正在做的是:

// monolog
$container['logger'] = function ($c) {
    $settings = $c->get('settings')['logger'];
    $logger = new Monolog\Logger($settings['name']);
    $logger->pushProcessor(new Monolog\Processor\UidProcessor());
    $logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], $settings['level']));

    $client = new Raven_Client(
        'http://key@ip:9000/2'
    );

    $handler = new Monolog\Handler\RavenHandler($client);
    $handler->setFormatter(new Monolog\Formatter\LineFormatter("%message% %context% %extra%\n"));

    $logger->pushHandler($handler);

    return $logger;
};

但我的哨兵仪表板中没有出现所有错误。 例如访问未定义的数组索引。 谢谢。

【问题讨论】:

    标签: php error-handling sentry slim-3


    【解决方案1】:

    我认为最好的方法是执行以下操作(我没有对此进行测试或曾经使用过 Slim,但查看 Slim 文档,这是一种的方法):

    require '../../vendor/autoload.php';(作曲家自动加载)之后的index.php(应该是应用程序入口点)中。

    添加 Raven 初始化代码:

    $sentry = new Raven_Client('http://key@ip:9000/2');
    $sentry->install();
    

    这将配置 SDK 来处理(和发送)所有错误,不再需要 Monolog 处理程序。

    如果您想将它集成到您​​创建的 ErrorHandler 类中,查看 this skeleton project 可能会给您一些想法。

    【讨论】:

      【解决方案2】:

      我正在使用自定义错误处理程序来捕获异常。这样我可以同时使用默认的 slim 错误处理程序和 Sentry 错误报告。

      这是我的代码:

      // initalize sentry
      Sentry\init(['dsn' => 'your_dsn' ]);
      
      // Run app
      $app = (new App())->get();
      
      // register custom error handler
      $c = $app->getContainer();
      $c['errorHandler'] = function ($c) {
          return function ($request, $response, $exception) use ($c) {
              // send error to sentry
              Sentry\captureException($exception);
      
              // invoke default error handler
              $handler = new Slim\Handlers\Error();
              return $handler->__invoke($request, $response, $exception);
          };
      };
      
      $app->run();
      

      不确定这是否是“推荐”方式,但它有效。

      【讨论】:

      • 我认为这是一种有效的方式。但不要忘记使用 displayErrorDetailsnew Slim\Handlers\Error($c['settings']['displayErrorDetails'])
      猜你喜欢
      • 1970-01-01
      • 2021-09-29
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多