mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-27 04:10:30 +08:00
Перевод runtime-logging на русский язык
This commit is contained in:
116
docs/guide-ru/runtime-logging.md
Normal file
116
docs/guide-ru/runtime-logging.md
Normal file
@@ -0,0 +1,116 @@
|
||||
Логгирование
|
||||
============
|
||||
|
||||
> Раздел находится в разработке
|
||||
|
||||
В Yii встроен гибкий и расширяемый логгер, который способен обрабатывать сообщения в соответствии с их уровнем важности и типом.
|
||||
С его помощью также можно фильтровать вообщения по разными критериям и пересылать их в файлы, email, в дебаггер и т.п.
|
||||
|
||||
Основы логгирования
|
||||
-------------------
|
||||
|
||||
В самом простом виде логгирование - это просто вызов метода, как в примере ниже:
|
||||
|
||||
```php
|
||||
\Yii::info('Привет, я - тестовое сообщение лога');
|
||||
```
|
||||
|
||||
Вы можете логгировать как данные срокового типа, так и более сложные структуры данных, такие как массивы и объекты.
|
||||
Если логгируемые данные - не строка, обработчики логов по умолчанию сериализуют значение, используя [[yii\helpers\Vardumper::export()]].
|
||||
|
||||
### Категории сообщений
|
||||
|
||||
Вы можете указать категорию сообщения, чтобы разделить сообщения разного типа в дальнейшем, и по разному их обработать.
|
||||
Категория сообщения передается вторым аргументом методов логгирования. По умолчанию присваивается категория `application`.
|
||||
|
||||
### Уровни важности
|
||||
|
||||
Доступно несколько уровней важности и соответствующим им методов логгирования:
|
||||
|
||||
- [[Yii::trace]] в основном используется в разработке, чтобы логгировать прогресс выполнения кода. Заметьте, что он работает только в
|
||||
режиме разработки, когда константа `YII_DEBUG` имеет значение `true`.
|
||||
- [[Yii::error]] используется в случае невосстановимой ошибки.
|
||||
- [[Yii::warning]] используется, когда произошла ошибка, но исполнение может быть продолжено.
|
||||
- [[Yii::info]] используется, чтобы фиксировать информацию о важных событиях, таких как логин администратора.
|
||||
|
||||
Цели сообщений
|
||||
------------------
|
||||
|
||||
Когда вызывается один из логгирующих методов, сообщение передается компоненту [[yii\log\Logger]], доступному через
|
||||
`Yii::getLogger()`. Логгер хранит сообщения в памяти, и когда сообщений достаточно для отправки, или когда
|
||||
заканчивается текущий запрос, отправляет сообщения по целям назначения, таким как файл или email.
|
||||
|
||||
|
||||
Вы можете конфигурировать цели сообщений таким образом:
|
||||
|
||||
```php
|
||||
[
|
||||
'bootstrap' => ['log'], // убеждаемся, что логгер загружается до запуска приложения
|
||||
'components' => [
|
||||
'log' => [
|
||||
'targets' => [
|
||||
'file' => [
|
||||
'class' => 'yii\log\FileTarget',
|
||||
'levels' => ['trace', 'info'],
|
||||
'categories' => ['yii\*'],
|
||||
],
|
||||
'email' => [
|
||||
'class' => 'yii\log\EmailTarget',
|
||||
'levels' => ['error', 'warning'],
|
||||
'message' => [
|
||||
'to' => ['admin@example.com', 'developer@example.com'],
|
||||
'subject' => 'Новое сообщение логгера example.com',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
]
|
||||
```
|
||||
|
||||
В конфигурации выше мы назначает две цели: [[yii\log\FileTarget|file]] и [[yii\log\EmailTarget|email]]. В обоих случаях
|
||||
мы фильтруем сообщения по важности, а в случае с записью в файл еще и по категории. `yii\*` значит все категории, начинающиеся с `yii\`.
|
||||
|
||||
Каждая цель может иметь имя, и к ней можно обращаться через [[yii\log\Logger::targets|targets]] следующим образом:
|
||||
|
||||
```php
|
||||
Yii::$app->log->targets['file']->enabled = false;
|
||||
```
|
||||
|
||||
Когда приложение заканчивает работу, или когда достигнут предел количества сообщений [[yii\log\Logger::flushInterval|flushInterval]], логгер
|
||||
вызовет метод [[yii\log\Logger::flush()|flush()]] для отправки сообщений по маршрутам.
|
||||
|
||||
> Обратите внимание, что в примере выше мы добавили компонент `log` в список [автозагрузки](runtime-bootstrapping.md) компонентов, чтобы
|
||||
он инициализировался в самом начале жизненного цикла приложения, чтобы, в свою очередь, убедиться, что логгирование будет происходить с самого начала
|
||||
приложения.
|
||||
|
||||
|
||||
Профилирование
|
||||
--------------
|
||||
|
||||
Профилирование - особый тип сообщений, который может быть использован для замера времени, необходимого определенным
|
||||
блокам кода для отработки, чтобы выяснить, где можно улучшить производительность.
|
||||
|
||||
Чтобы пользоваться профилированием нужно понять, какие блоки кода нужно профилировать. Затем нужно отметить начало и конец каждого блока, вызывая
|
||||
нижеследующие методы:
|
||||
|
||||
```php
|
||||
\Yii::beginProfile('myBenchmark');
|
||||
...блок кода для профилирования...
|
||||
\Yii::endProfile('myBenchmark');
|
||||
```
|
||||
|
||||
где `myBenchmark` - уникальный идентификатор блока кода.
|
||||
|
||||
Заметьте, что блоки кода должны быть правильно вложены друг в друга. Посмотрите пример ниже:
|
||||
|
||||
```php
|
||||
\Yii::beginProfile('block1');
|
||||
// код блока 1
|
||||
\Yii::beginProfile('block2');
|
||||
// код блока два, который входит в блок один
|
||||
\Yii::endProfile('block2');
|
||||
\Yii::endProfile('block1');
|
||||
```
|
||||
|
||||
Результаты профилирования [можно отображать в дебаггере](module-debug.md).
|
||||
Reference in New Issue
Block a user