karelwintersky / arris
Karel Wintersky's Application µFramework
Installs: 1 678
Dependents: 3
Suggesters: 2
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 4
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
- ext-readline: *
- ext-simplexml: *
- monolog/monolog: ^2.8
- nikic/fast-route: ^1.3
- psr/log: ^1.1
Requires (Dev)
- php-sage/sage: ^1.3
- predis/predis: ^2.0
- symfony/var-dumper: ^5.4
- vlucas/phpdotenv: ^3.3
Suggests
- adbario/php-dot-notation: PHP dot notation access to arrays
- ajur-media/php-image-resize: PHP class to re-size and scale images
- karelwintersky/arris.helpers: Arris µFramework helpers
- php-curl-class/php-curl-class: PHP Curl Class makes it easy to send HTTP requests and integrate with web APIs.
- php-sage/sage: Sage - Insightful PHP debugging assistant, pretty replacement for var_dump() and debug_backtrace().
- sabre/event: sabre/event is a library for lightweight event-based programming (more complexity than Arris/Hook)
- spatie/regex: A sane interface for php's built in preg_* functions
- dev-master
- 2.1.1
- 2.1.0
- 2.0.9
- 2.0.2
- 2.0.1
- 2.0.0
- 1.80.0
- 1.74.0
- 1.73.0
- 1.72.0
- 1.71.0
- 1.70.2
- 1.70.0
- 1.65.0
- 1.63.0
- 1.62.1
- 1.62.0
- 1.61.0
- 1.60.0
- 1.59.0
- 1.58.0
- 1.57.0
- 1.56.0
- 1.55.0
- 1.54.10
- 1.54.9
- 1.54.0
- 1.53.0
- 1.52.0
- 1.51.0
- 1.50.0
- 1.49.0
- 1.47.2
- 1.47.0
- 1.42.0
- 1.41.1
- 1.40.0
- 1.39.3
- 1.39.2
- 1.39.0
- 1.38.2
- 1.38.0
- 1.37.1
- 1.37.0
- 1.34.8
- 1.34.7
- 1.34.6
- 1.34.0
- 1.33.0
- 1.32.0
- 1.31.0
- 1.22
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.14.1
- 1.14
- 1.13.1
- 1.13
- 1.12
- 1.7
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6
- 1.5
This package is auto-updated.
Last update: 2023-01-09 23:49:29 UTC
README
Class collection for some my projects
Sub-packages
- Arris.Toolkit.Nginx,
composer require karelwintersky/arris.toolkit.nginx
- Arris.Toolkit.Sphinx,
composer require karelwintersky/arris.toolkit.sphinx
- Arris.Toolkit.CDNNow,
composer require karelwintersky/arris.toolkit.cdnnow
- Arris.Toolkit.CLIConsole,
composer require karelwintersky/arris.toolkit.cli-console
- DrCalculus,
composer require karelwintersky/arris.drcalculus
How to use
- App
- AppConfig
- AppLogger
- AppRouter
- CLIConsole
- DB, DBPool
- Hook
- Utils\Timer
App - Реестр
$app = App::factory(); // or ::handle()
$app->set(DB::class, DB::C());
$app->set(PHPAuth::class, new PHPAuth(DB::C(), (new PHPAuthConfig())->loadENV('_env')->getConfig() ));
$app = App::factory(); // or ::handle()
$dbc = $app->get(DB::class);
// or
$dbc = (App::access())->get(DB::class);
$auth = $app->get(PHPAuth::class);
AppConfig
???
AppLogger
AppLogger::init($application, $instance, $options = []):void
Инициализирует класс логгера
$application
- Имя приложения$instance
- код инстанса приложения (рекомендуется генерировать его при старте приложения и с помощью этого кода отличать логи, записанные разными инстансами приложения параллельно)$options
опции приложения:bubbling
- [FALSE] - всплывает ли логгируемое сообщение?default_log_level
- [Monolog::DEBUG] - уровень логгирования по умолчаниюdefault_logfile_path
- [''] - путь к файлам логов по умолчаниюdefault_logfile_prefix
- [''] - префикс файла лога по умолчаниюdefault_log_file
- ['_.log'] - имя файла лога по умолчанию, применяется если для имени файла передан NULLdefault_handler
- [NULL], или хэндлер, реализующий \Monolog\Handler\HandlerInterface как логгер по умолчанию для этого скоупаadd_scope_to_log
- [FALSE] - добавлять ли имя скоупа к имени логгера в файле лога?deferred_scope_creation
- [TRUE] - разрешать ли отложенную инициализацию скоуповdeferred_scope_separate_files
- [TRUE] - использовать ли разные файлы для deferred-скоупов (на основе имени скоупа)
Add Scope
AppLogger::addScope($scope = null, $scope_levels = [], $scope_logging_enabled = true, $is_deferred_scope = false):void
Добавляет скоуп (логгер) с параметрами
$scope
- имя скоупа$scope_levels
- массив кортежей с опциями уровней логгирования.$scope_logging_enabled
- включено ли логгирование для этого скоупа. Это глобальная настройка для скоупа, если логгирование отключено - никакие опции, переданные в$scope_levels
его не включат. Если этим параметром логгирование отключено (false), но скоуп создается, но для всех уровней логгирования хэндлер ставитсяNullLogger
.$is_deferred_scope
- служебный аргумент, его никогда не следует указывать напрямую (он задает создание логгера как deferred)
Настройки логгеров по уровням (логгирования) передаются в массиве $scope_levels
. Может быть передан пустой массив - тогда поставятся опции "по умолчанию" (на основе глобальных опций), а скоуп будет создан как 'deferred' (отложенная инициализация).
Пример:
AppLogger::addScope('mysql',
[
[ '__mysql.100-debug.log', Logger::DEBUG, 'enable' => true],
[ '__mysql.250-notice.log', Logger::NOTICE, 'enable' => true],
[ '__mysql.300-warning.log', Logger::WARNING, 'enable' => true],
[ '__mysql.400-error.log', Logger::ERROR, 'enable' => true],
], getenv('IS_MYSQL_LOGGER_ENABLED'));
Параметры уровня логгирования (элементы кортежа опций):
- Первый элемент:
filename
- имя файла (в случае отсутствия будет применено имя по умолчанию из глобальных опций) - Второй элемент:
logging_level
- уровень логгирования, используются числа или (что удобнее), константы\Monolog\Logger::DEBUG
и другие из того же неймспейса.
Остальные параметры передаются через ключи ассоциативного массива:
enabled
- [TRUE], разрешен ли этот уровень логгирования. Применяется тот же механизм, что и для глобальной опции$scope_logging_enabled
для скоупа;bubbling
- [FALSE], всплывает ли сообщение логгирования на следующий (более низкий) уровень?handler
- [NULL] либо хэндлер, реализующий интерфейсMonolog\Handler\HandlerInterface
. Если указан NULL - будет использован хэндлер по умолчанию: StreamHandler, записывающий лог в файл.
NB: Следует отметить, что если используется необъявленный в скоупе логгер, например:
AppLogger::scope('mysql')->emergency('MYSQL EMERGENCY');
монолог проспамит этим сообщением по всем объявленным уровням.
Usage
Вызов AppLogger::scope($scope_name)
возвращает инстанс \Monolog\Logger
, к которому можно применить штатные методы логгирования:
debug, notice, warn, error, emergency и так далее
Например:
AppLogger::scope('mysql')->debug("mysql::Debug", [ ['x'], ['y']]);
AppLogger::scope('mysql')->notice('mysql::Notice', ['x', 'y']);
Deferred Scope
Есть возможность использовать скоупы с отложенной инициализацией и параметрами по умолчанию. Этот механизм называется Deferred Scope.
Вызов аналогичен предварительно инициализированному логгеру:
AppLogger::scope('usage')->emergency('EMERGENCY USAGE');
В этом случае будет создан скоуп usage
со всеми уровнями логгирования и параметрами по умолчанию (но реальный вызов логгера произойдет только для уровня emergency
).
NB: Если при инициализации обычного скоупа методом addScope()
передан пустой массив опций логгеров - будет применен механизм инициализации deferred-скоупа.
Примечания (usage hints)
Один файл для нескольких уровней логгирования
Указываем наименьший используемый уровень логгирования (Logger::NOTICE
)
AppLogger::addScope('log.selectel', [ [ '_selectel_upload.log', Logger::NOTICE ] ]);
Теперь вот эти два вызова запишут в файл 2 строчки
AppLogger::scope('log.selectel')->error('Error');
AppLogger::scope('log.selectel')->notice('Notice');
AppRouter
CLIConsole
DB
todo
DBPool
todo