Improved app debug (#1438)

* Improved app debug

* Updated

* Update config.php

* Update Dev.php

* Update Dev.php

* Update Dev.php

* Update Dev.php

* Update config.php

* Update Dev.php

* Update CHANGELOG.md
This commit is contained in:
Roman Kelesidis 2024-04-06 10:41:14 +07:00 committed by GitHub
commit cfcda68a99
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 77 additions and 48 deletions

View file

@ -6,6 +6,7 @@
**Merged pull requests:** **Merged pull requests:**
- Release 2.4.3 🐎 ([belomaxorka](https://github.com/belomaxorka)) - Release 2.4.3 🐎 ([belomaxorka](https://github.com/belomaxorka))
- Improved app debug [\#1438](https://github.com/torrentpier/torrentpier/pull/1438) ([belomaxorka](https://github.com/belomaxorka))
- Minor improvements [\#1435](https://github.com/torrentpier/torrentpier/pull/1435) ([belomaxorka](https://github.com/belomaxorka)) - Minor improvements [\#1435](https://github.com/torrentpier/torrentpier/pull/1435) ([belomaxorka](https://github.com/belomaxorka))
## [v2.4.2](https://github.com/torrentpier/torrentpier/tree/v2.4.2) (2024-03-30) ## [v2.4.2](https://github.com/torrentpier/torrentpier/tree/v2.4.2) (2024-03-30)

View file

@ -87,9 +87,9 @@ if (is_file(BB_PATH . '/library/config.local.php')) {
} }
/** /**
* Progressive error reporting * Error reporting
*/ */
\TorrentPier\Dev::initDebug(); $debug = new \TorrentPier\Dev();
/** /**
* Server variables initialize * Server variables initialize

View file

@ -447,14 +447,15 @@ $bb_cfg['adv_email'] = "adv@$domain_name"; // advertisement email
// Error reporting // Error reporting
$bb_cfg['bugsnag'] = [ $bb_cfg['bugsnag'] = [
'enabled' => true, 'enabled' => true,
'api_key' => '33b3ed0102946bab71341f9edc125e21', 'api_key' => '33b3ed0102946bab71341f9edc125e21', // Don't change this if you want to help us find bugs
]; ];
$bb_cfg['telegram_sender'] = [ $bb_cfg['telegram_sender'] = [
// How to get chat_id? https://api.telegram.org/bot{YOUR_TOKEN}/getUpdates
'enabled' => false, 'enabled' => false,
'token' => '', 'token' => '', // Bot token
'chat_id' => '', 'chat_id' => '', // Bot chat_id
'timeout' => 10 'timeout' => 10 // Timeout for responses
]; ];
// Special users // Special users

View file

@ -64,10 +64,8 @@ define('LOG_MAX_SIZE', 1048576); // bytes
// Error reporting // Error reporting
ini_set('error_reporting', E_ALL); // PHP error reporting mode | https://www.php.net/manual/en/errorfunc.constants.php ini_set('error_reporting', E_ALL); // PHP error reporting mode | https://www.php.net/manual/en/errorfunc.constants.php
ini_set('display_errors', 1); // Show general php errors
ini_set('display_startup_errors', 1); // Show startup php errors
define('MYSQLI_ERROR_REPORTING', MYSQLI_REPORT_ERROR); // MySQL error reporting mode | https://www.php.net/manual/mysqli-driver.report-mode.php define('MYSQLI_ERROR_REPORTING', MYSQLI_REPORT_ERROR); // MySQL error reporting mode | https://www.php.net/manual/mysqli-driver.report-mode.php
ini_set('log_errors', 1); // php native logging ini_set('log_errors', 1); // Enable logging (For native & Whoops)
ini_set('error_log', LOG_DIR . '/php_errors.log'); // path to log file enabled only if log_errors == 1 (native) ini_set('error_log', LOG_DIR . '/php_errors.log'); // path to log file enabled only if log_errors == 1 (native)
define('WHOOPS_LOG_FILE', LOG_DIR . '/php_whoops.log'); // log file enabled only if log_errors == 1 and APP_DEBUG == true (whoops) define('WHOOPS_LOG_FILE', LOG_DIR . '/php_whoops.log'); // log file enabled only if log_errors == 1 and APP_DEBUG == true (whoops)

View file

@ -35,24 +35,41 @@ class Dev
/** /**
* Environment type * Environment type
* *
* @var string|null * @var string
*/ */
public static ?string $envType = null; public string $envType = 'local';
/** /**
* Base debug functionality init * Whoops instance
* *
* @return void * @var Run
*/ */
public static function initDebug(): void private Run $whoops;
{
self::$envType = env('APP_ENV', 'local');
if (self::$envType === 'production') { /**
self::getBugsnag(); * Constructor
} else { */
self::getWhoops(); public function __construct()
{
$this->envType = env('APP_ENV', 'local');
$this->whoops = new Run;
switch ($this->envType) {
case 'production':
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
$this->getWhoopsProduction();
break;
case 'local':
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
$this->getWhoops();
break;
} }
$this->getBugsnag();
$this->getTelegramSender();
$this->whoops->register();
} }
/** /**
@ -60,7 +77,7 @@ class Dev
* *
* @return void * @return void
*/ */
private static function getBugsnag(): void private function getBugsnag(): void
{ {
global $bb_cfg; global $bb_cfg;
@ -68,8 +85,40 @@ class Dev
return; return;
} }
$bugsnag = Client::make($bb_cfg['bugsnag']['api_key']); Handler::register(Client::make($bb_cfg['bugsnag']['api_key']));
Handler::register($bugsnag); }
/**
* Telegram debug driver
*
* @return void
*/
private function getTelegramSender(): void
{
global $bb_cfg;
if ($bb_cfg['telegram_sender']['enabled']) {
$telegramSender = new PlainTextHandler();
$telegramSender->loggerOnly(true);
$telegramSender->setLogger((new Logger(
APP_NAME,
[(new TelegramHandler($bb_cfg['telegram_sender']['token'], (int)$bb_cfg['telegram_sender']['chat_id'], timeout: (int)$bb_cfg['telegram_sender']['timeout']))
->setFormatter(new TelegramFormatter())]
)));
$this->whoops->pushHandler($telegramSender);
}
}
/**
* Whoops production debug driver
*
* @return void
*/
private function getWhoopsProduction(): void
{
$this->whoops->pushHandler(function () {
echo 'Sorry, something went wrong. Drink coffee and come back after some time... ☕️';
});
} }
/** /**
@ -77,20 +126,16 @@ class Dev
* *
* @return void * @return void
*/ */
private static function getWhoops(): void private function getWhoops(): void
{ {
global $bb_cfg;
if (!APP_DEBUG) { if (!APP_DEBUG) {
return; return;
} }
$whoops = new Run;
/** /**
* Show errors on page * Show errors on page
*/ */
$whoops->pushHandler(new PrettyPageHandler); $this->whoops->pushHandler(new PrettyPageHandler);
/** /**
* Show log in browser console * Show log in browser console
@ -102,12 +147,12 @@ class Dev
[(new BrowserConsoleHandler()) [(new BrowserConsoleHandler())
->setFormatter((new LineFormatter(null, null, true)))] ->setFormatter((new LineFormatter(null, null, true)))]
))); )));
$whoops->pushHandler($loggingInConsole); $this->whoops->pushHandler($loggingInConsole);
/** /**
* Log errors in file * Log errors in file
*/ */
if (ini_get('log_errors') == 1) { if ((int)ini_get('log_errors') === 1) {
$loggingInFile = new PlainTextHandler(); $loggingInFile = new PlainTextHandler();
$loggingInFile->loggerOnly(true); $loggingInFile->loggerOnly(true);
$loggingInFile->setLogger((new Logger( $loggingInFile->setLogger((new Logger(
@ -115,24 +160,8 @@ class Dev
[(new StreamHandler(WHOOPS_LOG_FILE)) [(new StreamHandler(WHOOPS_LOG_FILE))
->setFormatter((new LineFormatter(null, null, true)))] ->setFormatter((new LineFormatter(null, null, true)))]
))); )));
$whoops->pushHandler($loggingInFile); $this->whoops->pushHandler($loggingInFile);
} }
/**
* Send debug via Telegram
*/
if ($bb_cfg['telegram_sender']['enabled']) {
$telegramSender = new PlainTextHandler();
$telegramSender->loggerOnly(true);
$telegramSender->setLogger((new Logger(
APP_NAME,
[(new TelegramHandler($bb_cfg['telegram_sender']['token'], (int)$bb_cfg['telegram_sender']['chat_id'], timeout: $bb_cfg['telegram_sender']['timeout']))
->setFormatter(new TelegramFormatter())]
)));
$whoops->pushHandler($telegramSender);
}
$whoops->register();
} }
/** /**