찾다
백엔드 개발PHP 튜토리얼PHP 프레임워크의 로깅 시스템

 

저는 현재 회사에서 PHP 백엔드 개발자 프로그래머로 일하고 있습니다(저희 팀에는 프론트엔드가 없어서 활동할 때 프론트엔드 작업을 하게 되었습니다). 회사에서 프론트엔드와 백엔드 프로그램을 만드는데 2주가 걸렸습니다. (당시에는 못해서 주말에 이틀간 야근을 했던 기억이 나네요...) 이제 4개월이 넘었습니다. 별로 복잡하지 않은 활동은 오후에 할 수 있습니다. 물론 지금은 확장성이나 재사용성 등 여러 가지를 고려할 것입니다. 작은 플러그인과 비슷한 것들이 많이 쌓이기 때문에 더 빨라질 것입니다. . . . . . 그러나 나는 하루 종일 "요구 사항에 서서 요구 사항을 수행하는 것"이 ​​매우 나쁘다는 것을 알았습니다. 이렇게 하면 사소한 요구 사항에 갇혀 있고 중요한 부분을 수행할 시간이 없기 때문에 시스템과 프레임워크를 배우지 못할 것입니다. 그리고 동료와 상사가 그런 일을 하는 데 익숙해지면 기술적인 내용은 없지만 수행해야 하는 작업을 만날 때마다 주저 없이 이를 밀어붙일 것입니다. 저처럼 다들 기술적인 내용으로 뭔가를 마스터해서 프로그래머로서의 자부심을 갖고 싶어 하고요.) 시간이 지나면 익숙해지겠죠... 정말 비참한 일이니까 빼겠습니다. 시간을 내어 프레임워크의 내용을 배우고 단순한 코더가 되지 않도록 노력하십시오.

소개

PHP 프레임워크에 노출된 친구들은 프로젝트에서 로그의 중요한 역할을 알 수 있으며 오류 위치를 찾는 데 도움이 되고 프로그램을 보다 친숙하게 만들 수 있습니다(제대로 처리하면 직접 오류가 발생하지 않습니다). 큰 힙(영어(영어) 프로그래머만 실제로 이동할 수 있음), 디버깅 중에 매우 편리할 것이며 몇 가지 중요한 작업 등을 기록할 수도 있습니다. 간단히 말해서, 완전한 프로젝트에 로그 시스템이 없으면 개발 경로는 가시덤불이 가득할 것이고, 구덩이도 있을 것이고, 반드시 넘어지게 될 것입니다.

소개

PHP 로깅 시스템을 마스터하려면 먼저 이러한 사항을 철저히 이해해야 합니다.

1. PHP의 여러 기능

1 set_Exception_handler(콜백 $Exception_handler) //예외 사용자 정의 핸들러 함수 등록 캡처

1 set_error_handler(콜백 $error_handler) //오류 사용자 정의 핸들러 함수 등록 캡처

1 register_shutdown_function(콜백 $callback) //프로그램 실행 중 비정상 종료 오류 캡쳐 핸들러 기능 등록

이 세 가지 기능은 개발자에게 오류 처리 제어에 있어 많은 자율성을 제공하며 로깅 시스템에 로그 정보를 기록하는 역할을 담당합니다.

프로그램에서 예외가 발생하면 PHP 커널은 예외 오류를 발생시킨 후 사용자에게 오류 메시지를 인쇄합니다. 예외 처리 기능이 등록되면 PHP에서 발생한 예외가 자신에게 전달됩니다. 정의된 등록된 예외 포착 함수에는 수행해야 하는 처리가 포함되어 있으며 오류 정보(오류 세부 정보 및 오류 위치 포함)가 기록되어 있습니다. 함수가 예외를 처리한 후 예외가 종료됩니다.

프로그램에서 오류가 발생하면 우리가 등록한 오류 처리 함수는 오류 정보를 오류 예외 개체로 변환하여 첫 번째 단계의 $Exception_handler 함수인 예외 처리 함수에 전달합니다.

재개 중 종료 오류가 발생하면 우리가 등록한 비정상 종료 처리 함수가 실행됩니다. 이 함수는 error_get_last()를 통해 마지막 종료의 오류 객체를 얻은 후 이전 부분과 마찬가지로 오류를 발생시킵니다. . 예외 개체인 경우 이 개체를 등록된 예외 처리 함수에 전달합니다.

실제로 보면 예외인지 오류인지 알 수 있듯이 자신의 정보를 예외 처리 함수에서 인식한 예외 정보로 변환한 뒤 예외 처리 함수에 넘겨서 처리한다. 비예외 정보는 메이크업과 같습니다. 예외 핸들러는 이러한 비예외 정보를 인식하지 못합니다. 단지 로딩 및 언로딩(비예외 정보 자체가 예외 정보로 변환되는 것입니다.) 발생해야 함) 예외 처리기가 이를 인식합니다.

PHP 로그 시스템의 오류 처리 프로세스

이제 이러한 함수는 일반적으로 예외 처리 라이브러리 및 오류 로깅 라이브러리와 함께 작동합니다. 예외 처리 라이브러리에는 등록할 3가지 함수가 포함되어 있습니다. 위에서 언급한 기능은 일반적으로 다음과 같이 프로그램 프레임워크 입구에서 로드 및 등록됩니다.

여기서는 배열(클래스, 함수) 방식을 사용합니다.

<span>1</span> <span>set_exception_handler</span>(<span>array</span>("Myexception","exceptionHandler"<span>));
</span><span>2</span> <span>set_error_handler</span>(<span>array</span>("Myexception","errorHandler"<span>));
</span><span>3</span> <span>register_shutdown_function</span>(<span>array</span>("Myexception","shutdownHandler"));

2. 로깅 관련 클래스 라이브러리

첫 번째 부분에서 소개한 내용은 예외, 오류 및 종료만 캡처하는 것입니다. 이는 첫 번째 단계일 뿐이며, 다음으로 이러한 로그 정보를 기록하는 등 합리적으로 처리해야 합니다. 로컬 파일 시스템(이 작업은 array("MyException", "ExceptionHandler")에 있음), 로깅 클래스 라이브러리가 사용됩니다. (아래에 언급된 클래스 라이브러리는 kohana 로그 시스템의 설계를 바탕으로 합니다.)

일본식 로깅도 매우 간단합니다. 파일 끝에 정보를 추가하기만 하면 누구나 쉽게 구현할 수 있다고 생각합니다. 확장된 로깅 클래스 라이브러리는 그렇게 간단하지 않으며 오랜 연습 끝에 요약하고 최적화해야 합니다. kohana 프레임워크의 로깅 클래스 라이브러리는 비교적 성숙되어 있으므로 사용할 수 있습니다. 참고용으로 여기에 있습니다.

<span>109</span> <span>/*</span><span>*
</span><span>110</span> <span> * Attach the file write to logging. Multiple writers are supported.
</span><span>111</span>  <span>*/</span>
<span>112</span> Kohana::<span>$log</span>->attach(<span>new</span> Log_File(APPPATH.'logs'));
로그 객체

로깅 객체를 추가하는 것입니다. 둘은 올리브 배경을 가지고 있으므로 코하나에서는 서로 다른 클래스 라이브러리 인스턴스입니다. 로깅 개체는 두 부분으로 나누어집니다. 첫 번째 부분은 로깅 개체 목록을 유지하는 데 사용됩니다. 이를 이해하는 방법은 실제로 하나 이상의 로깅 개체를 포함하는 컨테이너와 같습니다. 두 번째 부분에서는 이러한 로깅 개체가 실제로 로그를 기록하는 데 사용됩니다. 또한 각 개체에 대해 기록할 오류 수준의 배열도 있습니다. 오류 수준이 충족될 때만 기록되고 그렇지 않으면 생략됩니다. 다음은 이름을 바꾼 후 나만의 단순화된 로깅 방법입니다.

이해를 돕기 위해 "컨테이너" 이름을 Log로 지정하고 기록된 인스턴스를 Logwriter로 지정했습니다. 프로그램 시작 시 두 가지 다른 로그 유형을 쉽게 추가한 것을 볼 수 있습니다. 첫 번째는 오류 번호로 모든 오류를 기록합니다. Log::DEBUG보다 작은 수준(그보다 높은 오류 수준)을 규칙에 따라 ./data/debug 폴더에 기록합니다. 두 번째는 Log::NOTICE 수준 이상의 오류를 기록하는 것입니다. 물론, 어떤 오류가 좋은지 더 자세히 지정할 수도 있습니다. 배열을 전달하기만 하면 됩니다. 이것이 편리하고 빠르다고 생각합니다. 필요에 따라 오류 로그를 추가하고 이를 다른 로그 디렉터리로 나눌 수 있습니다. 아래 그림을 보면 이해하는 데 도움이 됩니다.
<span>1</span> self::<span>$log</span> = <span>Log</span>::<span>instance();
</span><span>2</span> self::<span>$log</span>->attach(<span>new</span> Logwriter("./data/debug"),<span>Log</span>::<span>DEBUG);
</span><span>3</span> self::<span>$log</span>->attach(<span>new</span> Logwriter("./data/notice"),<span>Log</span>::NOTICE);

로그와 로그라이터의 관계

위 그림에서 Log는 다양한 특정 Logwriter 개체를 포함하는 컨테이너임을 알 수 있습니다. 각 개체는 서로 다른 정보를 기록할 수 있으며, 오류 정보를 파일에 플러시할 때 각 개체가 실행됩니다. 오류 메시지에 오류를 기록하려는 경우 인스턴스를 확인하세요. 오류 메시지의 수준이 Logwriter에 포함되어 있지 않으면 무시됩니다.

이 부분이 첫 번째 부분과 어떻게 작동하나요? 실제로는 매우 간단합니다. 예외에 의해 예외가 포착되면 오류 메시지(오류 위치, 오류 코드, 오류 메시지 등 포함)를 로그 컨테이너의 errormessage 배열에 추가하기 위해 호출됩니다. 프로그램이 끝난 후 이 정보를 파일에 기록하십시오. kohana 코드를 읽을 때 하나의 오류가 여러 번 발생할 수 있으므로 여기서는 Kohana가 더 잘 최적화되어 있지 않음을 알 수 있습니다. 오류가 발생하면 한 번만 기록하면 프로그램이 반환되기 전에 추가 IO와 시간이 소요되므로 kohana의 접근 방식은 기본적으로 모든 오류, 예외 및 로그를 Log::$errormessage에 저장하는 것입니다. Writer 작업은 Register_shutdown_function에 대해 설명합니다. 이 함수의 기능은 프로그램이 비정상적으로 종료되거나 실행이 완료된 후 실행하는 것이므로 위의 첫 번째 부분에서도 사용됩니다. 로그 기록은 이 PHP 실행에 큰 영향을 미치지 않습니다.

3. 예시 요약

이제 로그 시스템에 대한 개요를 살펴보고 사용할 "로그 시스템"을 이미 작성할 수 있습니다. 이것이 포함된 github 주소입니다. 코드를 작성하고 필요한 경우 예제를 참조하세요.

https://github.com/AizuYan/phplog.git

이 글의 저작권은 글쓴이(luluyrt@163.com)와 블로그파크에 있습니다. 글을 재인쇄한 후 글쓴이와 원문링크 없이 어떠한 형태의 전재도 금지합니다. 기사 페이지의 명확한 위치에 제공되어야 합니다. 그렇지 않으면 당사는 법적 책임을 추구할 권리를 보유합니다.

위 내용은 PHP 프레임워크의 로깅 시스템을 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
解决方法:您的组织要求您更改 PIN 码解决方法:您的组织要求您更改 PIN 码Oct 04, 2023 pm 05:45 PM

“你的组织要求你更改PIN消息”将显示在登录屏幕上。当在使用基于组织的帐户设置的电脑上达到PIN过期限制时,就会发生这种情况,在该电脑上,他们可以控制个人设备。但是,如果您使用个人帐户设置了Windows,则理想情况下不应显示错误消息。虽然情况并非总是如此。大多数遇到错误的用户使用个人帐户报告。为什么我的组织要求我在Windows11上更改我的PIN?可能是您的帐户与组织相关联,您的主要方法应该是验证这一点。联系域管理员会有所帮助!此外,配置错误的本地策略设置或不正确的注册表项也可能导致错误。即

Windows 11 上调整窗口边框设置的方法:更改颜色和大小Windows 11 上调整窗口边框设置的方法:更改颜色和大小Sep 22, 2023 am 11:37 AM

Windows11将清新优雅的设计带到了最前沿;现代界面允许您个性化和更改最精细的细节,例如窗口边框。在本指南中,我们将讨论分步说明,以帮助您在Windows操作系统中创建反映您的风格的环境。如何更改窗口边框设置?按+打开“设置”应用。WindowsI转到个性化,然后单击颜色设置。颜色更改窗口边框设置窗口11“宽度=”643“高度=”500“&gt;找到在标题栏和窗口边框上显示强调色选项,然后切换它旁边的开关。若要在“开始”菜单和任务栏上显示主题色,请打开“在开始”菜单和任务栏上显示主题

如何在 Windows 11 上更改标题栏颜色?如何在 Windows 11 上更改标题栏颜色?Sep 14, 2023 pm 03:33 PM

默认情况下,Windows11上的标题栏颜色取决于您选择的深色/浅色主题。但是,您可以将其更改为所需的任何颜色。在本指南中,我们将讨论三种方法的分步说明,以更改它并个性化您的桌面体验,使其具有视觉吸引力。是否可以更改活动和非活动窗口的标题栏颜色?是的,您可以使用“设置”应用更改活动窗口的标题栏颜色,也可以使用注册表编辑器更改非活动窗口的标题栏颜色。若要了解这些步骤,请转到下一部分。如何在Windows11中更改标题栏的颜色?1.使用“设置”应用按+打开设置窗口。WindowsI前往“个性化”,然

OOBELANGUAGE错误Windows 11 / 10修复中出现问题的问题OOBELANGUAGE错误Windows 11 / 10修复中出现问题的问题Jul 16, 2023 pm 03:29 PM

您是否在Windows安装程序页面上看到“出现问题”以及“OOBELANGUAGE”语句?Windows的安装有时会因此类错误而停止。OOBE表示开箱即用的体验。正如错误提示所表示的那样,这是与OOBE语言选择相关的问题。没有什么可担心的,你可以通过OOBE屏幕本身的漂亮注册表编辑来解决这个问题。快速修复–1.单击OOBE应用底部的“重试”按钮。这将继续进行该过程,而不会再打嗝。2.使用电源按钮强制关闭系统。系统重新启动后,OOBE应继续。3.断开系统与互联网的连接。在脱机模式下完成OOBE的所

Windows 11 上启用或禁用任务栏缩略图预览的方法Windows 11 上启用或禁用任务栏缩略图预览的方法Sep 15, 2023 pm 03:57 PM

任务栏缩略图可能很有趣,但它们也可能分散注意力或烦人。考虑到您将鼠标悬停在该区域的频率,您可能无意中关闭了重要窗口几次。另一个缺点是它使用更多的系统资源,因此,如果您一直在寻找一种提高资源效率的方法,我们将向您展示如何禁用它。不过,如果您的硬件规格可以处理它并且您喜欢预览版,则可以启用它。如何在Windows11中启用任务栏缩略图预览?1.使用“设置”应用点击键并单击设置。Windows单击系统,然后选择关于。点击高级系统设置。导航到“高级”选项卡,然后选择“性能”下的“设置”。在“视觉效果”选

Windows 11 上的显示缩放比例调整指南Windows 11 上的显示缩放比例调整指南Sep 19, 2023 pm 06:45 PM

在Windows11上的显示缩放方面,我们都有不同的偏好。有些人喜欢大图标,有些人喜欢小图标。但是,我们都同意拥有正确的缩放比例很重要。字体缩放不良或图像过度缩放可能是工作时真正的生产力杀手,因此您需要知道如何对其进行自定义以充分利用系统功能。自定义缩放的优点:对于难以阅读屏幕上的文本的人来说,这是一个有用的功能。它可以帮助您一次在屏幕上查看更多内容。您可以创建仅适用于某些监视器和应用程序的自定义扩展配置文件。可以帮助提高低端硬件的性能。它使您可以更好地控制屏幕上的内容。如何在Windows11

10种在 Windows 11 上调整亮度的方法10种在 Windows 11 上调整亮度的方法Dec 18, 2023 pm 02:21 PM

屏幕亮度是使用现代计算设备不可或缺的一部分,尤其是当您长时间注视屏幕时。它可以帮助您减轻眼睛疲劳,提高易读性,并轻松有效地查看内容。但是,根据您的设置,有时很难管理亮度,尤其是在具有新UI更改的Windows11上。如果您在调整亮度时遇到问题,以下是在Windows11上管理亮度的所有方法。如何在Windows11上更改亮度[10种方式解释]单显示器用户可以使用以下方法在Windows11上调整亮度。这包括使用单个显示器的台式机系统以及笔记本电脑。让我们开始吧。方法1:使用操作中心操作中心是访问

如何修复Windows服务器中的激活错误代码0xc004f069如何修复Windows服务器中的激活错误代码0xc004f069Jul 22, 2023 am 09:49 AM

Windows上的激活过程有时会突然转向显示包含此错误代码0xc004f069的错误消息。虽然激活过程已经联机,但一些运行WindowsServer的旧系统可能会遇到此问题。通过这些初步检查,如果这些检查不能帮助您激活系统,请跳转到主要解决方案以解决问题。解决方法–关闭错误消息和激活窗口。然后,重新启动计算机。再次从头开始重试Windows激活过程。修复1–从终端激活从cmd终端激活WindowsServerEdition系统。阶段–1检查Windows服务器版本您必须检查您使用的是哪种类型的W

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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

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

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경