laravel_php 예제의 오류 및 로그 사용에 대한 자세한 설명
이 글의 예시에서는 laravel의 오류 및 로그 사용법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
로그
라라벨의 로그인은 모노로그를 기반으로 캡슐화되어 있습니다. laravel은 이에 대해 여러 가지 작업을 수행합니다:
① 모노로그의 addInfo 등의 기능을 info 등의 기능으로 단순화
② useFiles 및 useDailyFiles라는 두 개의 매개변수를 추가하여 로그 관리 및 잘라내기가 더 쉬워졌습니다.
③ monolog 메소드를 호출하려면 callMonolog 함수를 호출해야 합니다
다음 요구 사항을 구현하는 방법을 살펴보겠습니다.
다른 로그에 다른 로그 정보 저장
이 요구사항은 매우 일반적입니다. 예를 들어 주문 호출 로그는 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; } }
이렇게 하면 서로 다른 로그 데이터가 서로 다른 로그 파일에 저장됩니다. 로그 데이터 정보도 기록할 수 있습니다.
Laravel의 오류 로그 스택이 너무 깁니다. 어떻게 해야 하나요?
위의 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); }); }
오류
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에 대한 더 많은 정보에 관심이 있는 독자는 이 사이트의 특별 주제인 "Laravel 프레임워크 소개 및 고급 튜토리얼", "PHP 우수 개발 프레임워크 요약", "Smarty 템플릿 시작에 대한 기본 튜토리얼"을 확인할 수 있습니다. ", "php 날짜 및 시간" 사용법 요약", "php 객체지향 프로그래밍 입문 튜토리얼", "php 문자열(문자열) 사용법 요약", "php+mysql 데이터베이스 조작 입문 튜토리얼" 및 "php 공통 데이터베이스 조작 기술 요약"
이 기사가 Laravel 프레임워크를 기반으로 하는 모든 사람의 PHP 프로그램 설계에 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

laravel 일정 작업 실행 비 응답 문제 해결 Laravel의 일정 작업 일정을 사용할 때 많은 개발자 가이 문제에 직면합니다 : 스케줄 : 실행 ...

Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

DCAT를 사용할 때 DCATADMIN (LARAVEL-ADMIN)에서 데이터를 추가하려면 사용자 정의의 테이블 기능을 구현하는 방법 ...

Laravel 프레임 워크 및 Laravel 프레임 워크 및 Redis를 사용할 때 Redis 연결을 공유하는 데 영향을 줄 수 있습니다. 개발자는 문제가 발생할 수 있습니다. 구성을 통해 ...

Laravel 다중 테넌트 확장 패키지 패키지 패키지 패키지 패키지 Stancl/Tenancy, ...

Laraveleloquent 모델 검색 : 데이터베이스 데이터를 쉽게 얻을 수 있습니다. 이 기사는 데이터베이스에서 데이터를 효율적으로 얻는 데 도움이되는 다양한 웅변 모델 검색 기술을 자세히 소개합니다. 1. 모든 기록을 얻으십시오. 모든 () 메소드를 사용하여 데이터베이스 테이블에서 모든 레코드를 가져옵니다. 이것은 컬렉션을 반환합니다. Foreach 루프 또는 기타 수집 방법을 사용하여 데이터에 액세스 할 수 있습니다 : Foreach ($ postas $ post) {echo $ post->

7 백만 레코드를 효율적으로 처리하고 지리 공간 기술로 대화식지도를 만듭니다. 이 기사는 Laravel과 MySQL을 사용하여 7 백만 개 이상의 레코드를 효율적으로 처리하고 대화식지도 시각화로 변환하는 방법을 살펴 봅니다. 초기 챌린지 프로젝트 요구 사항 : MySQL 데이터베이스에서 7 백만 레코드를 사용하여 귀중한 통찰력을 추출합니다. 많은 사람들이 먼저 프로그래밍 언어를 고려하지만 데이터베이스 자체를 무시합니다. 요구 사항을 충족시킬 수 있습니까? 데이터 마이그레이션 또는 구조 조정이 필요합니까? MySQL이 큰 데이터로드를 견딜 수 있습니까? 예비 분석 : 주요 필터 및 속성을 식별해야합니다. 분석 후, 몇 가지 속성만이 솔루션과 관련이 있음이 밝혀졌습니다. 필터의 타당성을 확인하고 검색을 최적화하기위한 제한 사항을 설정했습니다. 도시를 기반으로 한지도 검색
