wodcz/nette-sentry-bridge

一个桥接器,它向官方的 Sentry PHP SDK 客户端添加一些框架特定的上下文。

0.3 2017-10-06 08:50 UTC

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,则扩展将不会记录任何内容。