이 글의 내용은 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('app.log_path'); $log->useDailyFiles( $path, $this->maxFiles(), $this->logLevel() ); } }
config/app.php 디렉토리에 구성 추가:
'log_path' => env('APP_LOG_PATH', storage_path('/logs/laravel.log')),
앱 디렉토리에 새 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__.'/../') );
이렇게 해서 자연스럽게 로그 경로를 정의하는 데 성공했고, 이 경험을 통해 프레임워크가 내 요구 사항을 충족하지 못하는 영역을 더욱 최적화할 수 있었고 프레임워크를 변경하지 않았습니다. 프레임워크에 버그 수정이 있으면 프레임워크를 안전하게 업데이트할 수 있습니다.
추천 관련 기사:
위 내용은 Laravel5.5에서 로그 동작 분석을 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

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

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

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

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

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

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

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


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

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

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

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

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
