CakePHP - Логирование

Вход в CakePHP - очень простая задача. Вам просто нужно использовать одну функцию. Вы можете регистрировать ошибки, исключения, действия пользователей, действия, предпринятые пользователями, для любого фонового процесса, такого как cronjob. Регистрировать данные в CakePHP очень просто. Функция log () предоставляется LogTrait, который является общим предком почти для всех классов CakePHP.

Конфигурация регистрации

Мы можем настроить файл входа в систему config/app.php. В файле есть раздел журнала, в котором вы можете настроить параметры ведения журнала, как показано на следующем снимке экрана.

По умолчанию вы увидите два уровня журнала - error а также debugуже настроен для вас. Каждый будет обрабатывать разные уровни сообщений.

CakePHP поддерживает различные уровни ведения журнала, как показано ниже -

  • Emergency - Система непригодна для использования

  • Alert - Действия должны быть предприняты немедленно

  • Critical - Критические условия

  • Error - Условия ошибки

  • Warning - Условия предупреждения

  • Notice - Нормальное, но серьезное состояние

  • Info - Информационные сообщения

  • Debug - Сообщения на уровне отладки

Запись в файл журнала

Есть два способа записи в файл журнала.

Первый - использовать статический write()метод. Ниже приводится синтаксис статическогоwrite() метод.

Синтаксис write (целое число | строка $ level , смешанное $ сообщение , строка | массив $ context [])
Параметры

Уровень серьезности написанного сообщения. Значение должно быть целым числом или строкой, соответствующей известному уровню.

Содержание сообщения для регистрации.

Дополнительные данные, которые будут использоваться для записи сообщения. Ключ специальной области видимости может быть передан для использования для дальнейшей фильтрации используемых механизмов журналов. Если передается строка или массив числовых индексов, он будет рассматриваться как ключ области видимости. УвидетьCake\Log\Log::config() для получения дополнительной информации об объемах ведения журнала.

Возврат

логический

Описание

Записывает данное сообщение и тип во все настроенные адаптеры журналов. Настроенным адаптерам передаются переменные $ level и $ message. $ level - это одна из следующих строк / значений.

Второй - использовать log() shortcut функция доступна на любом устройстве, использующем LogTrait Вызов log () вызывает внутренний вызов Log::write() -

пример

Внесите изменения в config/routes.php файл, как показано в следующей программе.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',
      ['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('logex',['controller'=>'Logexs','action'=>'index']);
   $builder->fallbacks();
});

Создать LogexsController.php файл в src/Controller/LogexsController.php. Скопируйте следующий код в файл контроллера.

src/Controller/LogexsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Log\Log;
   class LogexsController extends AppController{
      public function index(){
         /*The first way to write to log file.*/
         Log::write('debug',"Something didn't work.");
         /*The second way to write to log file.*/
         $this->log("Something didn't work.",'debug');
      }
   }
?>

Создать каталог Logexs в src/Template и в этом каталоге создайте Viewфайл с именем index.php. Скопируйте следующий код в этот файл.

src/Template/Logexs/index.php

Something is written in log file. Check log file logs\debug.log

Выполните приведенный выше пример, посетив следующий URL-адрес.

http: // локальный хост / cakephp4 / logex

Выход

После выполнения вы получите следующий результат.

Журналы будут добавлены в файл log / debug.log -