Laravel 5.3 학습 노트 의 오류&로그

6141 단어 Laravel오류&로그
1.소개
Laravel 은 기본적으로 오류 와 이상 처 리 를 설정 해 주 었 습 니 다.App\Exceptions\Handler 클래스 에서 이상 을 발생 시 키 고 응답 을 사용자 에 게 되 돌려 줍 니 다.본 튜 토리 얼 에서 우 리 는 이 종 류 를 깊이 연구 할 것 이다.
또한,Laravel 은 다양한 기능 이 강 한 로그 프로 세 서 를 제공 하기 위해 Monolog 로그 라 이브 러 리 를 통합 하 였 습 니 다.기본적으로 Laravel 은 일부 프로 세 서 를 설정 하 였 습 니 다.단일 로그 파일 을 선택 할 수도 있 고,시스템 로그 에 오류 정 보 를 기록 할 수도 있 습 니 다.
2.설정
오류 상세 정보 표시
설정 파일 config/app.php 의 debug 설정 항목 은 브 라 우 저 에 표 시 된 오류 에 대한 자세 한 정 보 를 제어 합 니 다.기본적으로 이 설정 은.env 파일 의 환경 변 수 를 통 해 APPDEBUG 에서 설정 합 니 다.
로 컬 개발 에 있어 환경 변수 APP 를 설정 해 야 합 니 다.DEBUG 값 은 true 입 니 다.생산 환경 에서 이 값 은 false 로 설정 되 어야 합 니 다.생산 환경 이 true 로 설정 되면 민감 한 설정 값 을 터미널 사용자 에 게 노출 시 킬 수 있 습 니 다.
로그 저장 소
기본적으로 Laravel 은 로그 방법 single,daily,syslog,errorolog 를 지원 합 니 다.로그 파일 을 단일 파일 로 만 들 지 않 고 매일 만 들 려 면 설정 파일 config/app.php 에 log 값 을 다음 과 같이 설정 해 야 합 니 다.'log' => 'daily'로그 파일 최대 수명 주기
daily 로그 모드 를 사용 할 때,Laravel 은 기본적으로 최근 5 일의 로 그 를 저장 합 니 다.이 시간 을 수정 하려 면 설정 log 를 추가 해 야 합 니 다.max_app 프로필 로 파일 이동:'log_max_files' => 30로그 오류 단계
Monolog 를 사용 할 때 로그 메시지 에 오류 단계 가 다 를 수 있 습 니 다.기본적으로 Laravel 은 모든 로 그 를 storage 디 렉 터 리 에 기록 하지만 생산 환경 에서 최소 오류 단 계 를 설정 하려 고 할 수 있 습 니 다.설정 파일 app.php 에 설정 항목 log 를 추가 할 수 있 습 니 다.level 로 이 루어 집 니 다.
이 설정 항목 이 설정 되면 Laravel 은 지정 한 단계 이상 의 모든 오류 단 계 를 기록 합 니 다.예 를 들 어 기본 loglevel 은 error 입 니 다.error,critical,alert 및 emergency 등급 의 로그 정 보 를 기록 합 니 다.'log_level' => env('APP_LOG_LEVEL', 'error'),주:Monolog 는 다음 과 같은 오류 단 계 를 지원 합 니 다.debug,info,notice,warning,error,critical,alert,emergency.
사용자 정의 Monolog 설정
응용 프로그램 에서 Monolog 설정 을 완전히 제어 하려 면 configure Monolog Using 방법 을 사용 할 수 있 습 니 다.boottstrap/app.php 파일 이$app 변 수 를 되 돌려 주기 전에 이 방법 을 사용 해 야 합 니 다.

$app->configureMonologUsing(function($monolog) {
  $monolog->pushHandler(...);
});

return $app;

3.이상 프로세서
모든 이상 은 클래스 App\\Exceptions\Handler 에서 처리 합 니 다.이 종 류 는 두 가지 방법 을 포함 합 니 다:report 와 render.아래 에서 우 리 는 이 두 가지 방법 을 상세 하 게 논술 한다.
report 방법
report 방법 은 버그 nag 나 Sentry 와 같은 외부 서비스 에 이상 을 기록 하고 전송 하 는 데 사 용 됩 니 다.기본적으로 report 방법 은 이상 이 기 록 된 기본 클래스 에 이상 을 전달 할 뿐 입 니 다.물론 필요 에 따라 이상 을 기록 하고 관련 처 리 를 할 수 있 습 니 다.
예 를 들 어 서로 다른 방식 으로 다른 유형의 이상 을 보고 할 필요 가 있다 면 PHP 의 instanceof 비교 조작 자 를 사용 할 수 있 습 니 다.

/**
 *        
 *
 * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
 *
 * @param \Exception $e
 * @return void
 */
public function report(Exception $e){
  if ($e instanceof CustomException) {
    //
  }

  return parent::report($e);
}

형식 으로 이상 무시
이상 프로세서 의$dont Report 속성 은 기록 되 지 않 은 이상 형식 배열 을 포함 하고 있 습 니 다.기본 값 으로 404 오류 이상 은 로그 파일 에 기록 되 지 않 습 니 다.필요 하 다 면 이 배열 에 다른 이상 형식 을 추가 할 수 있 습 니 다.

/**
 * A list of the exception types that should not be reported.
 *
 * @var array
 */
protected $dontReport = [
  \Illuminate\Auth\AuthenticationException::class,
  \Illuminate\Auth\Access\AuthorizationException::class,
  \Symfony\Component\HttpKernel\Exception\HttpException::class,
  \Illuminate\Database\Eloquent\ModelNotFoundException::class,
  \Illuminate\Validation\ValidationException::class,
];
render 방법
render 방법 은 주어진 이상 을 브 라 우 저 에 보 내 는 HTTP 응답 으로 바 꾸 는 것 을 책임 집 니 다.기본 적 인 상황 에서 이상 은 응답 을 만 드 는 기본 클래스 에 전 달 됩 니 다.물론 필요 에 따라 이상 유형 을 검사 하거나 사용자 정의 응답 을 되 돌려 줄 수도 있 습 니 다.

/**
 *       HTTP   
 *
 * @param \Illuminate\Http\Request $request
 * @param \Exception $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e){
  if ($e instanceof CustomException) {
    return response()->view('errors.custom', [], 500);
  }

  return parent::render($request, $e);
}

4.HTTP 이상
일부 이상 설명 은 서버 에서 온 HTTP 오류 코드 입 니 다.예 를 들 어 이것 은'페이지 를 찾 을 수 없습니다'오류(404)일 수도 있 습 니 다.'인증 실패 오류'(401)또는 프로그램 오류 로 인 한 500 오류 일 수도 있 습 니 다.응용 프로그램 에서 이러한 응답 을 만 들 기 위해 abort 방법 을 사용 할 수 있 습 니 다.
abort(404);
abort 방법 은 이상 프로세서 에 의 해 렌 더 링 되 는 이상 을 즉시 일 으 킬 수 있 습 니 다.또한 이렇게 응답 설명 을 제공 할 수 있 습 니 다.
abort(403, 'Unauthorized action.');
이 방법 은 생명 주 기 를 요청 하 는 모든 시간 에 사용 할 수 있다.
사용자 정의 HTTP 오류 페이지
Laravel 에 서 는 HTTP 상태 코드 가 다른 오류 페이지 를 되 돌려 주 는 것 이 간단 합 니 다.예 를 들 어 404 오류 페이지 를 사용자 정의 하려 면 resources/views/errors/404.blade.php 파일 을 만 듭 니 다.이 보기 파일 은 렌 더 링 프로그램 이 되 돌려 주 는 404 오류 에 사 용 됩 니 다.주의해 야 할 것 은 이 디 렉 터 리 의 보기 이름 이 해당 HTTP 상태 코드 와 일치 해 야 한 다 는 것 이다.
5.일지
Laravel 은 강력 한 Monolog 라 이브 러 리 를 기반 으로 간단 한 로그 추상 층 을 제공 합 니 다.기본적으로 Laravel 은 storage/logs 디 렉 터 리 에서 매일 로그 파일 을 만 드 는 것 으로 설정 되 어 있 습 니 다.로그 표면 에 로그 정 보 를 기록 할 수 있 습 니 다.

<?php

namespace App\Http\Controllers;

use Log;
use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller{
  /**
   *          
   *
   * @param int $id
   * @return Response
   */
  public function showProfile($id)
  {
    Log::info('Showing user profile for user: '.$id);
    return view('user.profile', ['user' => User::findOrFail($id)]);
  }
}

이 로그 기록 기 는 RFC 5424 에서 정의 하 는 8 가지 로그 단 계 를 제공 합 니 다.emergency,alert,critical,error,warning,notice,info 와 debug.
Log::emergency($error);
Log::alert($error);
Log::critical($error);
Log::error($error);
Log::warning($error);
Log::notice($error);
Log::info($error);
Log::debug($error);
문맥 정보
컨 텍스트 데이터 도 로그 방법 에 배열 로 전달 되 고 로그 메시지 와 함께 포맷 되 고 표 시 됩 니 다.Log::info('User failed to login.', ['id' => $user->id]);바 텀 Monolog 인 스 턴 스 방문
Monolog 에는 로그 에 사용 할 프로세서 가 여러 개 있 습 니 다.필요 하 다 면 Laravel 에서 사용 하 는 바 텀 Monolog 인 스 턴 스 를 방문 할 수 있 습 니 다.$monolog = Log::getMonolog();

좋은 웹페이지 즐겨찾기