찾다
PHP 프레임워크LaravelLaravel5.5에서 로그 동작 분석을 사용자 정의하는 방법

이 글의 내용은 Laravel5.5에서 로그 동작을 사용자 정의하는 방법에 대한 분석을 공유하는 것입니다. 내용은 매우 상세하며 도움이 필요한 친구들에게 도움이 되기를 바랍니다.

Laravel 5.6 버전에서는 로그 동작을 쉽게 커스터마이징할 수 있는 반면, 5.5 이하 버전에서는 로그 동작을 커스터마이징하는 자유도가 그다지 높지 않지만 프로젝트에 필요한 경우 프로젝트를 강제로 업그레이드할 수 없습니다. 5.6이라는 점 때문에 안정적인 프로젝트이기 때문에 대규모 버전의 프레임워크를 업그레이드하는 데에는 많은 함정이 있을 수 있습니다. 이러한 이유로 저는 Laravel 5.5의 로그를 제 요구에 맞게 변환하려고 했습니다.

Laravel의 로깅 동작은 대부분 IlluminateLogLogServiceProvider에 있습니다. 코드 조각을 살펴보면

/**
 * Configure the Monolog handlers for the application.
 *
 * @param \Illuminate\Log\Writer $log
 * @return void
 */
protected function configureDailyHandler(Writer $log)
{
 $log->useDailyFiles(
  $this->app->storagePath().'/logs/laravel.log', $this->maxFiles(),
  $this->logLevel()
 );
}

이것은 제가 프로젝트에서 가장 자주 사용하는 로그 저장 방법입니다. 로그 저장 경로가 쓰기와 거의 동일하다는 것을 알 수 있습니다. 불활성 상태는 외부 매개변수를 통해 쉽게 변경할 수 없습니다.

처음에는 이 Provider를 다시 작성하여 app.php의 공급자 배열에 등록하려고 생각했지만 소스 코드를 보면 프레임워크가 시작될 때 LogServiceProvider가 등록되어 있기 때문에 이 동작은 실현 가능하지 않습니다.

이 등록 동작을 제어하는 ​​방법이 있습니다:

protected function registerBaseServiceProviders()
{
 $this->register(new EventServiceProvider($this));

 $this->register(new LogServiceProvider($this));

 $this->register(new RoutingServiceProvider($this));
}

이제 어떻게 적용되는지 알았으므로 이 두 클래스를 상속하고 변경해야 하는 동작을 다음과 같이 수정하겠습니다. IlluminateLogLogServiceProvider를 상속하는 appProviders에 새 LogServiceProvider 클래스를 생성합니다. 코드는 다음과 같습니다:

<?php


namespace App\Providers;

use Illuminate\Log\LogServiceProvider as BaseLogServiceProvider;
use Illuminate\Log\Writer;

class LogServiceProvider extends BaseLogServiceProvider
{
 /**
  * Configure the Monolog handlers for the application.
  *
  * @param \Illuminate\Log\Writer $log
  * @return void
  */
 protected function configureDailyHandler(Writer $log)
 {
  $path = config(&#39;app.log_path&#39;);
  $log->useDailyFiles(
   $path, $this->maxFiles(),
   $this->logLevel()
  );
 }
}

config/app.php 디렉토리에 구성 추가:

&#39;log_path&#39; => env(&#39;APP_LOG_PATH&#39;, storage_path(&#39;/logs/laravel.log&#39;)),

앱 디렉토리에 새 Foundation 디렉토리를 생성하고, 새 애플리케이션을 생성합니다. IlluminateFoundationApplication 클래스를 상속하는 클래스이며,registerBaseServiceProviders 메소드를 재정의합니다.

<?php
/**
 * Created by PhpStorm.
 * User: dongyuxiang
 * Date: 2018/7/31
 * Time: 16:53
 */

namespace App\Foundation;

use App\Providers\LogServiceProvider;
use Illuminate\Events\EventServiceProvider;
use Illuminate\Routing\RoutingServiceProvider;
use Illuminate\Foundation\Application as BaseApplication;


class Application extends BaseApplication
{

 /**
  * Register all of the base service providers.
  *
  * @return void
  */
 protected function registerBaseServiceProviders()
 {
  $this->register(new EventServiceProvider($this));

  $this->register(new LogServiceProvider($this));

  $this->register(new RoutingServiceProvider($this));
 }
}

다시 작성했다고 하는데 실제로는 우리가 직접 만든 LogServiceProvider에서 사용 클래스를 변경한 것뿐입니다.

그런 다음 bootstrapapp.php에서 $app 변수의 새 개체를 상속하고 다시 작성한 개체로 바꿉니다.

$app = new App\Foundation\Application(
 realpath(__DIR__.&#39;/../&#39;)
);

이렇게 해서 자연스럽게 로그 경로를 정의하는 데 성공했고, 이 경험을 통해 프레임워크가 내 요구 사항을 충족하지 못하는 영역을 더욱 최적화할 수 있었고 프레임워크를 변경하지 않았습니다. 프레임워크에 버그 수정이 있으면 프레임워크를 안전하게 업데이트할 수 있습니다.

추천 관련 기사:

php 사용자 정의 오류 로그 예에 대한 자세한 설명

Yii2 사용자 정의 로그 파일 쓰기 로그

위 내용은 Laravel5.5에서 로그 동작 분석을 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
기술 문제 : 분산 팀원을위한 도구 및 리소스에 대한 공평한 액세스 보장기술 문제 : 분산 팀원을위한 도구 및 리소스에 대한 공평한 액세스 보장Apr 29, 2025 am 12:40 AM

분산 팀원이 도구 및 리소스에 공정한 액세스 권한을 갖도록하는 방법 : 1) 비동기 비디오 또는 텍스트 업데이트와 같은 저 대역폭 대안 사용, 연결 문제를 해결하기 위해; 2) 코어 중첩 근무 시간을 설정하고 시간대 차이를 관리하기위한 유연한 근무 시간을 제공합니다. 3) 번역 기능과 문화 인식 훈련을 통해 다양한 문화적 요구에 적응합니다. 이러한 전략은 포용적이고 효율적인 원격 작업 환경을 조성하는 데 도움이됩니다.

인스턴트 메시징 필수 해보 : 원격 설정에서 실시간 커뮤니케이션을 육성합니다인스턴트 메시징 필수 해보 : 원격 설정에서 실시간 커뮤니케이션을 육성합니다Apr 29, 2025 am 12:38 AM

forenhancingremotecollaboration, aninstantmessagingtoolmusthave : 1) 신뢰성이 연속적으로 해당하는 경우, 2) anintuitiveuserinterinterfaceynavigation, 3) Real-TimenotificationStayupdated, 4) SeamlessFilesharingforefficialDocumentExchange, 5) 통합

분산 팀에서 일하는 동안 어떤 도전에 직면 한 적이 있습니까?분산 팀에서 일하는 동안 어떤 도전에 직면 한 적이 있습니까?Apr 29, 2025 am 12:35 AM

ThebiggestchallengeofmanagingDistributedTeamsiscommunication.toaddressthis, usetoolslikeslack, Zoom 및 Github; setClearExectations; FoscertrustandAutonomy; ubstractAnchronousworkpatterns; andintegratestaskmanagement withCommunicationPlatformsForforforforforforforforforforfforforfforforfforforfforforfforfforfforfforforfforforfforforfforforfforforforfforfforforfforforfforforformital

새로운 Laravel 버전의 보안 개선은 무엇입니까?새로운 Laravel 버전의 보안 개선은 무엇입니까?Apr 29, 2025 am 12:17 AM

Laravel의 최신 버전은 다음을 포함하여 보안을 크게 향상 시켰습니다. 1.보다 강력한 토큰 검증 메커니즘을 통해 CSRF 보호 향상; 2. 향상된 쿼리 구성 방법을 통해 개선 된 SQL 주입 보호; 3. 사용자 데이터 보안을 보장하기위한 더 나은 세션 암호화; 4. 더 미세한 세분화 된 사용자 인증 및 MFA (Multi-Factor Authentication)를 지원하는 인증 시스템 향상.

시간대 탱고 : 글로벌 인력의 일정 충돌 예약 탐색시간대 탱고 : 글로벌 인력의 일정 충돌 예약 탐색Apr 29, 2025 am 12:13 AM

Tonavigateschedulingconflictsinaglobalworkforce, usetechnology, 공감 및 전략적 계획 : 1) EmployToolsworldtimebuddyorcalendlyforscheduling; 2) rotatemeettimeettimeettimeStoensureFairness; 3) SpuctionCoreHourOverlap;

Laravel을 통한 풀 스택 개발 : API 및 프론트 엔드 로직 관리Laravel을 통한 풀 스택 개발 : API 및 프론트 엔드 로직 관리Apr 28, 2025 am 12:22 AM

Laravel Full-Stack Development에서 API 및 프론트 엔드 로직을 관리하는 효과적인 방법은 다음과 같습니다. 1) 편안한 컨트롤러 및 리소스 라우팅 관리 API 사용; 2) 블레이드 템플릿 및 vue.js 또는 반응을 통한 프론트 엔드 로직 처리; 3) API 버전화 및 페이징을 통한 성능 최적화; 4) 유지 관리 및 확장 성을 보장하기 위해 백엔드 및 프론트 엔드 논리의 분리를 유지합니다.

번역 손실 : 분산 팀의 문화적 뉘앙스 및 오해번역 손실 : 분산 팀의 문화적 뉘앙스 및 오해Apr 28, 2025 am 12:22 AM

TotackleculturalIntricaciesindipributedTeams, Fosteranenvernmentcelebratingdifferences, bemindfulofcommunication, andusetoolsforclarity.1) 구현 culturalexChangessessionStosharestoriesandtraditions.2) AdvernCommunicationMethodStosuitculturalPreference

연결 측정 : 원격 커뮤니케이션 효과를위한 분석 및 통찰력연결 측정 : 원격 커뮤니케이션 효과를위한 분석 및 통찰력Apr 28, 2025 am 12:16 AM

toAssesstheeffectiveIneSofRemoteCommunication, FocusOn : 1) indagementMetricsLikemEsageFrequencyAndResponSetime, 2) SentimentAnalySistoGaUgeEmoptionalTone, 3) MeetingEfficivenitesThrougAntSendAndActionItems, and4) NetworkAnalysistOndStandCommiticaticPA

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기