This commit is contained in:
Roman Kelesidis 2024-04-03 12:59:12 +07:00
commit e95b14b8c0
2 changed files with 55 additions and 48 deletions

View file

@ -445,16 +445,17 @@ $bb_cfg['abuse_email'] = "abuse@$domain_name"; // abuse email (e.g. DMCA)
$bb_cfg['adv_email'] = "adv@$domain_name"; // advertisement email
// Error reporting
$bb_cfg['bugsnag'] = [
$bb_cfg['error_reporting'] = [
'enabled' => true,
'api_key' => '33b3ed0102946bab71341f9edc125e21',
];
$bb_cfg['telegram_sender'] = [
'enabled' => false,
'token' => '',
'chat_id' => '',
'timeout' => 10
'method' => 'telegram', // Available: bugsnag, telegram, both
'bugsnag' => [
'api_key' => '33b3ed0102946bab71341f9edc125e21',
],
'telegram' => [
'token' => '',
'chat_id' => '',
'timeout' => 10
]
];
// Special users

View file

@ -35,9 +35,11 @@ class Dev
/**
* Environment type
*
* @var string|null
* @var string
*/
public static ?string $envType = null;
public static string $envType;
public static $whoops;
/**
* Base debug functionality init
@ -46,30 +48,56 @@ class Dev
*/
public static function initDebug(): void
{
self::$envType = env('APP_ENV', 'local');
global $bb_cfg;
self::$envType = (string)env('APP_ENV', 'local');
self::$whoops = new Run;
if (self::$envType === 'production') {
self::getBugsnag();
if ($bb_cfg['error_reporting']['enabled']) {
if ($bb_cfg['error_reporting']['method'] == 'both' || $bb_cfg['error_reporting']['method'] == 'bugsnag') {
self::getBugsnag($bb_cfg['error_reporting']['bugsnag']['api_key']);
}
if ($bb_cfg['error_reporting']['method'] == 'both' || $bb_cfg['error_reporting']['method'] == 'telegram') {
self::getTelegramSender($bb_cfg['error_reporting']['telegram']);
}
}
} else {
self::getWhoops();
if (APP_DEBUG) {
self::getWhoops();
}
}
self::$whoops->register();
}
/**
* Bugsnag debug driver
*
* @param string $apiKey
* @return void
*/
private static function getBugsnag(): void
private static function getBugsnag(string $apiKey): void
{
global $bb_cfg;
Handler::register(Client::make($apiKey));
}
if (!$bb_cfg['bugsnag']['enabled']) {
return;
}
$bugsnag = Client::make($bb_cfg['bugsnag']['api_key']);
Handler::register($bugsnag);
/**
* Send debug via Telegram
*
* @param array $configTelegram
* @return void
*/
private static function getTelegramSender(array $configTelegram): void
{
$telegramSender = new PlainTextHandler();
$telegramSender->loggerOnly(true);
$telegramSender->setLogger((new Logger(
APP_NAME,
[(new TelegramHandler($configTelegram['token'], (int)$configTelegram['chat_id'], timeout: $configTelegram['timeout']))
->setFormatter(new TelegramFormatter())]
)));
self::$whoops->pushHandler($telegramSender);
}
/**
@ -79,18 +107,10 @@ class Dev
*/
private static function getWhoops(): void
{
global $bb_cfg;
if (!APP_DEBUG) {
return;
}
$whoops = new Run;
/**
* Show errors on page
*/
$whoops->pushHandler(new PrettyPageHandler);
self::$whoops->pushHandler(new PrettyPageHandler);
/**
* Show log in browser console
@ -102,7 +122,7 @@ class Dev
[(new BrowserConsoleHandler())
->setFormatter((new LineFormatter(null, null, true)))]
)));
$whoops->pushHandler($loggingInConsole);
self::$whoops->pushHandler($loggingInConsole);
/**
* Log errors in file
@ -115,24 +135,10 @@ class Dev
[(new StreamHandler(WHOOPS_LOG_FILE))
->setFormatter((new LineFormatter(null, null, true)))]
)));
$whoops->pushHandler($loggingInFile);
self::$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();
self::$whoops->register();
}
/**