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:**
- 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))
## [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

View file

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

View file

@ -64,10 +64,8 @@ define('LOG_MAX_SIZE', 1048576); // bytes
// Error reporting
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
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)
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
*
* @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
{
self::$envType = env('APP_ENV', 'local');
private Run $whoops;
if (self::$envType === 'production') {
self::getBugsnag();
} else {
self::getWhoops();
/**
* Constructor
*/
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
*/
private static function getBugsnag(): void
private function getBugsnag(): void
{
global $bb_cfg;
@ -68,8 +85,40 @@ class Dev
return;
}
$bugsnag = Client::make($bb_cfg['bugsnag']['api_key']);
Handler::register($bugsnag);
Handler::register(Client::make($bb_cfg['bugsnag']['api_key']));
}
/**
* 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
*/
private static function getWhoops(): void
private function getWhoops(): void
{
global $bb_cfg;
if (!APP_DEBUG) {
return;
}
$whoops = new Run;
/**
* Show errors on page
*/
$whoops->pushHandler(new PrettyPageHandler);
$this->whoops->pushHandler(new PrettyPageHandler);
/**
* Show log in browser console
@ -102,12 +147,12 @@ class Dev
[(new BrowserConsoleHandler())
->setFormatter((new LineFormatter(null, null, true)))]
)));
$whoops->pushHandler($loggingInConsole);
$this->whoops->pushHandler($loggingInConsole);
/**
* Log errors in file
*/
if (ini_get('log_errors') == 1) {
if ((int)ini_get('log_errors') === 1) {
$loggingInFile = new PlainTextHandler();
$loggingInFile->loggerOnly(true);
$loggingInFile->setLogger((new Logger(
@ -115,24 +160,8 @@ class Dev
[(new StreamHandler(WHOOPS_LOG_FILE))
->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();
}
/**