wodcz / nette-sentry-bridge
一个桥接器,它向官方的 Sentry PHP SDK 客户端添加一些框架特定的上下文。
0.3
2017-10-06 08:50 UTC
Requires
- php: >=5.3.0
- sentry/sentry: >=0.11.0
- tracy/tracy: >=2.1.0
This package is auto-updated.
Last update: 2024-08-29 04:43:03 UTC
README
一个桥接器,它向官方的 Sentry PHP SDK 客户端添加一些框架特定的上下文。
安装和使用
通过 composer 安装
composer require wodcz/nette-sentry-bridge
使用方法
这不是一个通常在配置文件 config.neon 的 extensions 部分注册的扩展。在我看来,这太晚了(在 DIC 初始化之前可能会发生一些不好的事情)。因此,设置略有不同。
app/bootstrap.php
:
<?php declare(strict_types=1); require __DIR__ . '/../vendor/autoload.php'; $configurator = new Nette\Configurator; //$configurator->setDebugMode('23.75.345.200'); // enable for your remote IP $configurator->enableTracy(__DIR__ . '/../log'); $configurator->setTimeZone('Europe/Prague'); $configurator->setTempDirectory(__DIR__ . '/../temp'); $configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); $configurator->addConfig(__DIR__ . '/config/config.neon'); $configurator->addConfig(__DIR__ . '/config/config.local.neon'); ####################################### PART 1 ####################################### # Try to load configuration from app/config/sentry.php file if(is_array($config = (@include __DIR__ . '/config/sentry.php')) && @$config['dsn']){ $logger = new \wodCZ\NetteSentryBridge\SentryLogger($config['dsn'], @$config['options'] ?: []); } ####################################### PART 1 ####################################### $container = $configurator->createContainer(); ####################################### PART 2 ####################################### # Add container instance to logger, so it can pull some info from there. if (isset($logger)) { $logger->setContainer($container); } ####################################### PART 2 ####################################### return $container;
然后,创建 app/config/sentry.php
并使用以下配置
app/config/sentry.php
:
<?php return [ 'dsn' => 'http://key:secret@sentry.example.com/123', 'options' => [ 'app_path' => __DIR__.'/../', 'environment' => 'production', 'exclude' => [ 'Nette\Application\BadRequestException', 'Nette\Application\ForbiddenRequestException', 'Nette\Application\AbortException' ], # 'revision' => '', # all options: https://docs.sentry.io/clients/php/config/ ] ];
如果您使用 Docker 或其他使用环境变量的设置,请使用以下替代配置。如果您没有指定 dsn 变量,则扩展将默默地不执行任何操作。
app/config/sentry.php
:
<?php return [ 'dsn' => getenv('SENTRY_DSN'), 'options' => [ 'app_path' => __DIR__.'/../', 'environment' => getenv('DEBUG') === 'true' ? 'development' : 'production', 'exclude' => [ 'Nette\Application\BadRequestException', 'Nette\Application\ForbiddenRequestException', 'Nette\Application\AbortException' ], # 'revision' => '', # all options: https://docs.sentry.io/clients/php/config/ ] ];
这只是一个示例,您需要做的只是创建 \wodCZ\NetteSentryBridge\SentryLogger
的实例以开始记录日志,并调用 $logger->setContainer($container)
以扩展日志并使用 Nette Context 以及记录 Nette 应用程序捕获的错误
重要提示,以防混淆
如果您启用了 tracy,则扩展将不会记录任何内容。