Logging with PSR3 – PHP Standard and Best Practice Part 20 (Last Part)

프로덕션에서 우리는 이러한 오류나 예외가 사용자에게 유명한 것으로 보이기를 원하지 않습니다 그러나 우리는 이러한 오류 및 기타 정보를 우리가 여기에서 원하는대로 어딘가에서보고 할 필요가 있습니다

로깅의 개념은 대부분의 오류가 작동하는 방식과 매우 유사합니다 가장 일반적인 로깅 시스템은 디버그 정보 알림 경고 오류 및 응급과 같은 공통 레벨을가집니다 PS r3은 기본 로깅 상호 작용을위한 인터페이스를 표준화하기 위해 개발되었습니다 PS r3 자체는 규칙과 인터페이스의 집합이므로 PS r3을 구현하는 실제 로깅 시스템을 사용해야합니다 하나의 훌륭한 로깅 시스템이 독백이라고합니다

처음부터 먼저 작곡가를 통해 독백을 설치해 봅시다 콘솔을 사용하여 작곡가 요구 사항을 입력 할 수 있습니까? 독백 슬롯 독백 나는 버전을 찾고있어 꼬리표 110을 사용하여 우리가 받아 들일 수 있다고 말할 수 있습니다 110 점 이상 그들은 잘 설치되어있어 이제이 수업에서 우리 콘솔이 더 필요합니다

인덱스 도트 PHP를 열고 독백을 사용하는 방법을 살펴볼 수 있습니다 이것은 절차 적 코드 기반에서 독백을 사용하는 예입니다 다시 말하지만, 이것은 애플리케이션이 실제로 어떻게 보이는지를 실제로 나타내지는 않습니다 이것은 논리적 파일로 분리되어야합니다 그러나 우리가 어떻게 독창적으로 로그를 남길 수 있는지를 보여줍니다 여기 3 호선

우리는 독창적 인 코드를로드하고 여기에있는 데 도움이 될 작곡가 자동 로더를 포함합니다 사용 설명서에서 독백 로그 작성기를 참조하고 있습니다 그러면 6 행의 전역 공간에서 로거를 사용할 수 있습니다 우리는 또 다른 반을 세계 공간과 이번에 가져올 것입니다 우리는 브라우저 콘솔 핸들러를 사용하고 있습니다

Monologue는 로그를 다양한 위치로 보내는 방법을 결정하는 클래스를 의미하는 용어 처리기를 사용합니다 로그 파일로의 출력과 같은 많은 장소로 물건을 보내기위한 핸들러가 많이 있습니다 Syslog 브라우저 콘솔 전자 메일은 로그와 같은 로깅 제공 업체도 호스팅합니다 Liana 유물 이제 다양한 클래스를 사용할 수 있습니다 우리는 로거 클래스를 인스턴스화 할 수 있습니다

문자열을 생성자에 첫 번째 인수로 전달합니다 그리고 이것은 우리 로거의 이름입니다 이것은 당신이 좋아하는 어떤 것이라도 될 수 있으며 일반적으로 로그를 구별하는 데 도움이되는 이름 일뿐입니다 로거 인스턴스가 로그 변수에 동일한 위치에 저장되므로 더 이상 함께 작업 할 수 있습니다 로거를 설정 한 후에는 핸들러를 설정하려고합니다

그래서 우리는 푸시 핸들러 메서드를 사용하여 다양한 다른 핸들러의 인스턴스를 여기에 추가합니다 우리는 하나의 핸들러 만 로그에 추가하고 있지만 실제로는 모든 종류의 다른 것들을 추가 할 수 있습니다 브라우저 콘솔 핸들러 만 사용 중입니다 그리고 당신은 기본적으로 새로운 인스턴스를 생성하고 그것을 핸들러에 보내어 코드를 읽는 것만으로도 충분합니다 모놀로그가 어떻게 작동하는지 조금씩 살펴보고 먼저 로그를 봅시다 모든 것이 여기에서 로그 변수의 참조입니다

오류 또는 경고와 같은 메시지를 실행할 수 있습니다 우리는 이제 몇 가지 디버그로 시작할 것입니다 이 방법은 PS r3에서 제공하므로 디버깅, 오류 및 경고 등을 사용하면 항상 똑같이있어 그들이 끈을 잡을 때 그들이 일하는 곳은 어디일까요? 뭔가가 일어나고 있습니다 그것은 무서운 큰 일일 필요는 없습니다

뭔가 알려주는 것뿐입니다 그것은 일어나고있다 자 이제 미리보기를 열면 이것이 어떻게 작동하는지 볼 수 있습니다 Chrome에서 브라우저 콘솔을 열거 나 사용하고있는 콘솔이라면 콘솔 탭에 표시됩니다 내 앱 디버그 무언가가 일어나고 있습니다

메시지가 전달되고 있음을 의미합니다 좀 더 모험을 시작합시다 어쩌면 우리는 루프에서 일어나는 일을 디버깅하려고 시도하고 있으며 여기에 아주 간단한 루프를 만들기 위해 노력 중입니다 이 루프를 열 번 반복 해 봅시다 우리는 그것을 foo라고 부를 것이다

새 줄에 써라 네 칸 좋아, 그걸 저장하자 그래서 여기에 우리는 뭔가 다른 일이 일어나고 있다는 것을 볼 수 있습니다 이제는 이러한 메시지에 컨텍스트를 전달할 수 있다면 더 유용 할 수 있습니다 배열을 만들 수 있습니다

익숙하지 않은 경우이 구문은 더 짧습니다 그리고 연관 배열이 이름을 능가하고 값을 전달한다고 말할 수 있습니다 미리보기로 돌아 가면 확인할 수 있습니다 우리는이 작은 당근과 이것들은 당신이 원하는대로 다양한 변수를 제공하는 컨텍스트를 제공합니다 디버깅뿐만 아니라 경고도 있습니다

그리고 우리는 오류 우리는 결정적인 CEO에게 전자 메일을 보내는 것이 중요하거나, 이러한 중대한 오류 또는 슈퍼 악성을 테스트하는 데 사용되는 전자 메일을 보내려는 것이 좋을 것입니다 그럼 그 메시지를 적절하게 만들어 봅시다 이제 우리가 새로 고침하면 디버깅 정보가 오류로 경고로 표시되는 것을 볼 수 있습니다 그리고 여기에 중요한 오류가 있습니다 여기에 이제 처리기 유형에 따라 수행 할 수있는 작업이 있습니다

우리가 사용하는 핸들러는 얼마나 많은가? 어떤 아이템을 어떤 로그에 넣을 지 제한하고 싶을 수도있다 이렇게하기 위해 핸들러에 추가 인수를 보낼 수 있으며이 인수는 logger 클래스에서 제공하는 상수 그게 무슨 뜻인지 보여 줄게 당신은 브라우저 콘솔 처리기로 가서 로거를 사용하여 상수에 액세스 경고 상수를 전달합니다 우리는 단지 우리가 원하는 것을 말하고 있습니다 그것은 경고 또는 그 이상입니다

미리보기로 돌아가서 살펴 보겠습니다 우리는 우리의 경고와 오류 우리는 오류와 그 이상을 원합니다 훌륭하고 물론 그리고 거기에 우리가 간다 어떤 핸들러와 어떤보고 레벨을 사용할 지에 대한 구성을 가지고 놀아 라 하지만이게 로거의 아름다움입니다

사용하는 핸들러의 유형에 상관없이 핸들러 설정 행을 변경하고 애플리케이션의 다른 부분 만 변경하면됩니다 다른 로거 시스템을 사용하려는 경우 독점 물에 PSR 3을 준수하는 추가 혜택이 있습니다 해당 시스템이 PSR 3과 호환 될 가능성이 큽니다 두 항목이 다시 호환되면 응용 프로그램의 설정 코드 만 변경해야합니다 전체 응용 프로그램은 서비스 로케이터에서 로그 인스턴스를 우회하거나 수동으로 다른 클래스에 전달하여 로거에 의존 할 수 있습니다 그것을 알면 PSR 3이 될 것입니다 로그가 사용하는 메소드를 변경하는 것에 대해 걱정할 필요가 없습니다 왜냐하면 항상 동일 할 것이기 때문입니다

그것은이 과정을위한 것입니다 표준 및 모범 사례에 대해 많은 것을 배웠 으면합니다 내 이름은 필살 철갑 상어이며 필 트루 전 (phil sturgeon)에서 나를 만나거나 필 스터 전에서 필자에게 연락 할 수있다