{{TOC}} {{DOCVER 4.0=0da300f6445bec5a70d007f503834fce957b065b 16.10.2014 04:19:00, 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 05:21:00}} %%(DOCNEW 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 05:21:00) == Настройка == Обработчик журналов для вашего приложения зарегистрирован в ((/docs/v4/lifecycle#старт-файлы старт-файле)) %%(t)app/start/global.php%%. По умолчанию регистратор событий настроен на использование одного файла для ведения журнала; но вы можете изменить это при необходимости. Так как Laravel использует популярную библиотеку для ведения журналов ((GIT:../Seldaek/monolog Monolog)), вы можете воспользоваться различными обработчиками, которые она предлагает. Например, если вы хотите использовать однодневные файлы журналов, а не один большой файл, вы можете сделать следующее изменение в вашем старт-файле: ~%% $logFile = 'laravel.log'; Log::useDailyFiles(storage_path().'/logs/'.$logFile); ~%% %% === Детализация ошибок == По умолчанию в Laravel включена детализация ошибок, происходящих в вашем приложении. Это значит, что при их возникновении будет отображена страница с цепочкой вызовов и текстом ошибки. Вы можете отключить детализацию ошибок установкой настройки **debug** файла %%(t)app/config/app.php%% в значение %%false%%. .(alert) Настоятельно рекомендуется отключать детализацию ошибок для производственных серверов. == Обработка ошибок == Файл %%(t)app/start/global.php%% по умолчанию содержит обработчик любых исключений: %% App::error(function (Exception $exception) { Log::error($exception); }); %% Это самый примитивный обработчик. Однако вы можете зарегистрировать несколько обработчиков, если вам это нужно. Они будут вызываться в зависимости от типа %%Exception%%, указанного в их первом аргументе. Например, вы можете создать обработчик только для ошибок %%RuntimeException%%: %% App::error(function (RuntimeException $exception) { // Обработка исключения... }); %% Если обработчик возвращает ответ, он будет отправлен в браузер и никакие другие обработчики вызваны не будут: %% App::error(function (InvalidUserException $exception) { Log::error($exception); return 'Извини! Что-то не так с этим аккаунтом!'; }); %% Вы можете зарегистрировать обработчик критических ошибок PHP методом %%App::fatal()%%: %% App::fatal(function ($exception) { // }); %% Если у вас есть несколько обработчиков исключений, то они должны быть определены по порядку от самого общего до самого конкретного. Например, обработчик, который обрабатывает все исключения типа %%Exeption%% должен быть определён перед тем, который обрабатывает пользовательский тип исключений, такой как %%Illuminate\Encryption\DecryptException%%. === Где разместить обработчики ошибок == Для регистрации обработчиков ошибок нет места по умолчанию. В этом Laravel предоставляет вам полную свободу. Одним из вариантов - определение обработчиков в вашем файле %%(t)start/global.php%%. В общем это удобное расположение для размещения любого кода начальной загрузки. Если файл разрастается, то вы можете создать файл %%(t)app/errors.php%%, и "запрашивать" этот файл из вашего скрипта %%(t)start/global.php%%. Третий вариант - создать ((/docs/v4/ioc#поставщики поставщик услуг)), который будет регистрировать обработчиков. Опять же, здесь нет единственного "правильного" варианта. Выберите то место, которое вас устраивает. == ((#http)) Исключения HTTP == Некоторые исключения описывают коды HTTP-ошибок от сервера. Например, это может быть ошибка "страница не найдена" (404), "ошибка авторизации" (401) или даже сгенерированная разработчиком ошибка 500. Для того, чтобы отправить такой ответ, используйте следующее: %% App::abort(404); %% При желании, вы можете указать описание: %% App::abort(403, 'Требуется авторизация.'); %% Этот метод может быть использован на любом этапе обработки запроса. == ((#404)) Обработка 404 == Вы можете зарегистрировать обработчик для всех ошибок 404 ("Не найдено") в вашем приложении, что позволит вам легко отображать собственную страницу 404: %% App::missing(function ($exception) { return Response::view('errors.missing', array(), 404); }); %% == Журнал == Стандартный механизм журналирования представляет собой простую надстройку над мощной библиотекой ((GIT:../seldaek/monolog Monolog)). По умолчанию Laravel настроен для создания одного большого файла журнала для вашего приложения и хранения его в %%(t)app/storage/logs/laravel.log%%. Вы можете записывать в него таким образом: %% Log::info('Вот кое-какая полезная информация.'); Log::warning('Что-то может идти не так.'); Log::error('Что-то действительно идёт не так.'); %% Журнал предоставляет 7 уровней критичности, определённые в ((http://tools.ietf.org/html/rfc5424 RFC 5424)) (!!(tl_note) в порядке возрастания - //прим. пер.//!!): **debug**, **info**, **notice**, **warning**, **error**, **critical** и **alert**. В метод записи можно передать массив данных о текущем состоянии: %% Log::info('Log message', array('context' => 'Другая полезная информация.')); %% Monolog имеет множество других методов, которые вам могут пригодиться. Если нужно, вы можете получить экземпляр его класса: %% $monolog = Log::getMonolog(); %% Вы также можете зарегистрировать обработчик события для отслеживания всех новых сообщений. **Отслеживание новых сообщений в журнале** %% Log::listen(function ($level, $message, $context) { // }); %%