다음 튜토리얼 칼럼인 laravel에서는 laravel의 오류와 로그를 소개합니다(로그 디렉터리와 로그 파일 이름을 사용자 정의할 수 있습니다). 도움이 필요한 친구들에게 도움이 되길 바랍니다!
Log
라라벨의 로그는 모노로그를 기반으로 캡슐화되어 있습니다. Laravel은 이에 대해 여러 가지 작업을 수행했습니다:
좋아요, 다음 요구 사항을 구현하는 방법을 살펴보겠습니다.
이 요구 사항은 주문 호출과 같이 매우 일반적입니다. 로그는 order.log에 기록되어야 합니다. , 매장 정보를 획득한 기록은 shop.log에 기록되어야 합니다. 이렇게 할 수 있습니다:
<?php use Monolog\Logger; use Monolog\Handler\StreamHandler; use Illuminate\Log\Writer; class BLogger { // 所有的LOG都要求在这里注册 const LOG_ERROR = 'error'; private static $loggers = array(); // 获取一个实例 public static function getLogger($type = self::LOG_ERROR, $day = 30) { if (empty(self::$loggers[$type])) { self::$loggers[$type] = new Writer(new Logger($type)); self::$loggers[$type]->useDailyFiles(storage_path().'/logs/'. $type .'.log', $day); } $log = self::$loggers[$type]; return $log; } }
이러한 방식으로 다양한 로그 데이터가 다양한 로그 파일에 저장됩니다. 로그 데이터 정보도 기록할 수 있습니다.
위의 Blogger 클래스를 사용하여 start/global.php
// 错误日志信息 App::error(function(Exception $exception, $code) { Log::error($exception); $err = [ 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'code' => $exception->getCode(), 'url' => Request::url(), 'input' => Input::all(), ]; BLogger::getLogger(BLogger::LOG_ERROR)->error($err); });
에 필요한 오류 정보를 기록하세요. Laravel의 기본 로그는 분할을 사용하지 않습니다
그래서 laravel의 기본 로깅은 기본적으로 분할로 변경되어야 합니다.
start/global.php
Log::useDailyFiles(storage_path().'/logs/laravel.log', 30);
요청의 SQL 로그를 기록하는 방법
이것을 좀 더 다듬고 물어봐야 합니다. 실시간으로 기록하시겠습니까?
실시간 기록을 원하지 않는 경우 laravel에는 앱 요청으로 얻은 SQL 요청을 가져오는 DB::getQueryLog가 있습니다.
## 在filters.php中 App::after(function($request, $response) { // 数据库查询进行日志 $queries = DB::getQueryLog(); if (Config::get('query.log', false)) { BLogger::getLogger('query')->info($queries); } }
실시간 기록이 필요한 경우(즉, 어디에서나 죽을 때 이전 페이지의 sql 요청도 녹음된 경우) Illuminate.query 이벤트를 들어야 합니다
// 数据库实时请求的日志 if (Config::get('database.log', false)) { Event::listen('illuminate.query', function($query, $bindings, $time, $name) { $data = compact('query','bindings', 'time', 'name'); BLogger::getLogger(BLogger::LOG_QUERY_REAL_TIME)->info($data); }); }
Error
laravel의 모든 오류는 전역 App::error를 통과한 후 나옵니다.
예를 들어 인터페이스를 디자인하는 경우 오류가 발생하더라도 json 데이터를 반환하려면 다음과 같이 하면 됩니다.
// 错误日志信息 App::error(function(Exception $exception, $code) { // 如果没有路径就直接跳转到登录页面 if ($exception instanceof NotFoundHttpException) { return Redirect::route('login'); } Log::error($exception); $err = [ 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'code' => $exception->getCode(), 'url' => Request::url(), 'input' => Input::all(), ]; BLogger::getLogger(BLogger::LOG_ERROR)->error($err); $response = [ 'status' => 0, 'error' => "服务器内部错误", ]; return Response::json($response); });
404 오류도 보관하려는 경우:
App::missing(function($exception) { $response = [ 'status' => 0, 'error' => "请求路径错误", ]; return Response::json($response); });
위 내용은 laravel의 오류 및 로그 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!