Chức năng ghi lỗi trong PHP là gì?

Phát triển phần mềm là một nỗ lực phức tạp. Có nhiều thứ phải hoạt động vừa phải để toàn bộ hệ thống duy trì ổn định và hữu ích. Hầu hết thời gian, chỉ có rất nhiều nhà phát triển có thể dự đoán về tất cả các tình huống có thể xảy ra trong suốt thời gian tồn tại của ứng dụng. Điểm mấu chốt là phần mềm tốt là kết quả của một chuỗi dài các lần lặp lại, mỗi phần mềm được xây dựng dựa trên phản hồi thu được từ việc sử dụng phần mềm trước đó

Phản hồi này có nhiều dạng, trong đó rõ ràng nhất là nhận xét và khiếu nại của người dùng. Tuy nhiên, một thông báo như "Điều này không hoạt động. " không cung cấp đủ thông tin để chúng tôi khắc phục sự cố. Những gì chúng tôi, với tư cách là nhà phát triển, cần là thông tin chi tiết về những gì đang xảy ra khi mọi thứ đi xuống phía nam

Thông tin này thường có thể được tìm thấy trong các tệp nhật ký; . Tuy nhiên, để thông tin này tồn tại, chúng tôi phải rất chủ động trong việc để các chương trình của chúng tôi để lại manh mối khi chúng tiến tới mục tiêu của mình

Có hai câu hỏi cần được trả lời khi nghĩ về nhật ký

  1. Bạn nên đăng nhập những gì?
  2. Bạn nên lưu trữ nhật ký của mình ở đâu?

Câu hỏi đầu tiên có lẽ quá cụ thể để đưa ra câu trả lời chung chung, nhưng quy tắc ngón tay cái tốt nhất là "ghi lại bất cứ điều gì bạn nghĩ rằng bạn có thể cần để tìm ra điều gì đã xảy ra". Cuối cùng, đó là một trạng thái cân bằng tinh tế giữa việc có đủ thông tin và làm đầy đĩa máy chủ. Đó không phải là một lựa chọn dễ dàng

Câu hỏi thứ hai dễ giải quyết hơn một chút, vì chỉ có rất nhiều nơi thông tin có thể được lưu trữ trong môi trường máy tính

Trong bài viết này, tôi sẽ phân tích ba cách để tiếp cận nhiệm vụ phổ biến này. Hai chức năng đầu tiên là các chức năng tích hợp sẵn và chức năng cuối cùng là thư viện phổ biến của bên thứ ba

  • 
    trigger_error('Something went wrong', E_USER_ERROR);
    
    5
  • 
    trigger_error('Something went wrong', E_USER_ERROR);
    
    6
  • độc thoại

Chúng ta hãy đào sâu vào, phải không?

Lỗi đăng nhập qua trigger_error

Công cụ đầu tiên mà nhà phát triển PHP gặp khi tìm kiếm cơ chế ghi nhật ký là hàm trigger_error

Chức năng này rất đơn giản để sử dụng; . Số này có thể được cung cấp bằng các hằng số được xác định trước

Một ví dụ về cách sử dụng của nó như sau

trigger_error('Something went wrong', E_USER_ERROR);

Điều này sẽ tạo ra một đầu ra tương tự như sau

PHP Fatal error:  Something went wrong in php shell code on line 1

Tất nhiên, điều đó đúng nếu bạn chạy mã từ dòng lệnh. Ví dụ: nếu bạn đặt nó trong một tệp PHP để truy cập qua trình duyệt


trigger_error('Something went wrong', E_USER_ERROR);

Và sau đó đưa máy chủ web tích hợp lên bằng cách phát hành

php -S localhost:8000

Và cuối cùng thực hiện một yêu cầu tới


trigger_error('Something went wrong', E_USER_ERROR);
7, bạn sẽ thấy, ngay trong bảng điều khiển, một cái gì đó tương tự như sau

[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection

Trong trình duyệt, bạn sẽ thấy như sau

Chức năng ghi lỗi trong PHP là gì?

Một tính năng đặc biệt của chức năng này là nó bị ảnh hưởng nhiều bởi cấu hình của trình thông dịch. Điều này có nghĩa là tùy thuộc vào các cài đặt, chẳng hạn như error_reporting, display_errors và một số cài đặt khác, hành vi thực tế của hàm có thể thay đổi đáng kể

Chẳng hạn, nếu bạn khởi động lại máy chủ bằng lệnh sau

________số 8

Bạn sẽ thấy như sau

Chức năng ghi lỗi trong PHP là gì?

Điều này có nghĩa là trong thực tế, rất khó để đảm bảo kết quả nhất quán giữa các môi trường chạy khác nhau. Nó không thực sự là thứ bạn muốn cho các dự án của mình

Ghi nhật ký lỗi qua error_log

Một công cụ tích hợp khác mà PHP cung cấp là hàm error_log

Chức năng này dễ dự đoán hơn


trigger_error('Something went wrong', E_USER_ERROR);
5, vì nó chỉ phụ thuộc vào cài đặt error_log;

Chẳng hạn, nếu bạn thay đổi mã thành


trigger_error('Something went wrong', E_USER_ERROR);
1

Và làm mới trang, bạn sẽ nhìn chằm chằm vào một màn hình trống;


trigger_error('Something went wrong', E_USER_ERROR);
2

Ngay cả khi bạn sử dụng cùng một

php -S localhost:8000
0 để đưa máy chủ lên

Trên thực tế, theo mặc định, chức năng này lưu trữ các thông báo lỗi cùng với các thông báo lỗi từ máy chủ web

Bạn có thể thay đổi hành vi này thông qua tham số


trigger_error('Something went wrong', E_USER_ERROR);
9. Nếu bạn điền vào đó một số
php -S localhost:8000
2 khi gọi hàm, bạn sẽ yêu cầu trình thông dịch xuất thông báo của bạn sang một tệp cụ thể, tệp này được xác định bởi giá trị của tham số tiếp theo.
php -S localhost:8000
3. Như thế này


trigger_error('Something went wrong', E_USER_ERROR);
7

Nếu bạn làm mới trang. bạn sẽ kết thúc với cùng một màn hình trống, nhưng nhật ký máy chủ sẽ khác


trigger_error('Something went wrong', E_USER_ERROR);
8

Tuy nhiên, như mong đợi, nếu bạn xem các tệp có trong thư mục của dự án, bạn sẽ tìm thấy một tệp

php -S localhost:8000
4 mới được tạo và nếu bạn xem nội dung của nó, bạn sẽ thấy như sau

PHP Fatal error:  Something went wrong in php shell code on line 1
0

Một trong những điểm khác biệt chính giữa


trigger_error('Something went wrong', E_USER_ERROR);
6 và

trigger_error('Something went wrong', E_USER_ERROR);
5 là lệnh gọi đến cái sau rất có thể sẽ dẫn đến gián đoạn thực thi, trong khi cái trước sẽ chỉ ghi thông báo vào luồng thích hợp và trả lại quyền kiểm soát

Thoạt nhìn, bạn có thể có ấn tượng rằng hàm này thêm rất ít hoặc không có giá trị gì so với các hàm khác nhằm mục đích ghi chuỗi vào tệp

Tuy nhiên, nếu bạn xem xét kỹ hơn, bạn sẽ nhận thấy một tính năng rất đặc biệt và chắc chắn hữu ích của


trigger_error('Something went wrong', E_USER_ERROR);
6;

Mặc dù


trigger_error('Something went wrong', E_USER_ERROR);
5 hoặc

trigger_error('Something went wrong', E_USER_ERROR);
6 sẽ hoạt động về mặt kỹ thuật, nhưng rõ ràng là trải nghiệm dành cho nhà phát triển mà họ cung cấp là không tối ưu ở mức tốt nhất

Hãy suy nghĩ trong một phút về những gì bạn cần để lưu trữ thông tin nhật ký cả cục bộ và từ xa chỉ bằng cách sử dụng các công cụ này, chưa kể đến việc chọn đích đăng nhập theo mức độ nghiêm trọng

Tất nhiên, cộng đồng PHP có các tùy chọn tốt hơn theo ý của bạn. Đọc để khám phá một công cụ chuyên nghiệp

Lỗi ghi nhật ký qua Monolog

Cho đến giờ, tôi đã thảo luận về những gì bản thân PHP cung cấp, mà nói thẳng ra là không hấp dẫn lắm. Tuy nhiên, may mắn thay, có những nhà phát triển tuyệt vời tham gia vào việc vượt ra ngoài những ranh giới đó, biến sự xuất hiện của những công cụ tuyệt vời thành hiện thực. Đó là trường hợp của Monolog

Monolog là một thư viện hướng đối tượng có thể được đưa vào bất kỳ dự án PHP nào nhờ trình soạn thảo, cung cấp rất nhiều tính năng thực sự thú vị, chẳng hạn như khả năng gửi cùng một thông báo qua các kênh khác nhau (tệp, cơ sở dữ liệu và email

Hãy bắt đầu với một ví dụ đơn giản. bạn muốn giữ nhật ký của mọi địa chỉ IP truy cập trang web của bạn

Mã của bạn sẽ trông giống như sau

PHP Fatal error:  Something went wrong in php shell code on line 1
1

Bước tiếp theo là đưa Monolog vào bằng cách sử dụng lệnh sau

PHP Fatal error:  Something went wrong in php shell code on line 1
2

Cái nào sẽ tạo ra một đầu ra tương tự như sau

PHP Fatal error:  Something went wrong in php shell code on line 1
3

Sau khi cài đặt xong, bạn cần tận dụng thư viện trong code của mình. Như thường lệ, tất cả bắt đầu bằng việc bao gồm định nghĩa tự động tải

PHP Fatal error:  Something went wrong in php shell code on line 1
4

Bây giờ, trước khi chúng ta tiếp tục với việc tái cấu trúc này, có một số khái niệm bạn cần biết về. Vấn đề là, trong khi Monolog nâng việc ghi nhật ký lên một cấp độ hoàn toàn mới, thì loại sức mạnh đó đi kèm với một cái giá phải trả. không, tôi không nói về tiền, mà là về đường cong học tập

Cái đầu tiên là chính

[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
0. Lớp này tạo thành xương sống của toàn bộ thư viện. Trên thực tế, đó là thứ bạn sẽ sử dụng hầu hết thời gian

Bạn có thể có bao nhiêu logger tùy thích, mỗi logger có cấu hình riêng

Mỗi Logger được xác định bởi tên kênh của nó. Điều này có thể hữu ích nếu, chẳng hạn, bạn đang gửi nhật ký đến cùng một tệp và cần phân biệt chúng sau này

Ý tưởng là để các nhật ký được tạo qua Monolog có thể dễ dàng phân tích cú pháp bằng các công cụ đơn giản như

[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
1

Logger dựa vào ba lớp khác để thực hiện mục đích của nó

  • xử lý
  • bộ vi xử lý
  • Trình định dạng

Trình xử lý độc thoại

Trình xử lý là thành phần cấp thấp nhất. Trách nhiệm của người xử lý là trả lời câu hỏi "Nhật ký này nên được lưu trữ ở đâu?". Có nhiều lớp xử lý được định nghĩa trong thư viện Monolog. Dưới đây là một vài trong số họ

  • ErrorLogHandler. cái đơn giản nhất, chỉ là một cái bọc nhỏ xung quanh
    
    trigger_error('Something went wrong', E_USER_ERROR);
    
    6
  • NativeMailerHandler. gửi nhật ký đến một địa chỉ email bằng hàm
    [Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
    [Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
    [Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
    [Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
    [Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
    [Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
    [Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
    [Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
    
    3 của php
  • Trình xử lý SQS. gửi nhật ký tới hàng đợi AWS SQS

Bộ xử lý độc thoại

Bộ xử lý được sử dụng để chuyển đổi dữ liệu nhật ký thô trước khi được chuyển đến bộ xử lý để lưu trữ

Thông thường, điều này có nghĩa là thêm thông tin ngữ cảnh tiêu chuẩn, chẳng hạn như ngày giờ, người dùng và IP

Thư viện đi kèm với khá nhiều bộ xử lý rất hữu ích, chẳng hạn như

  • WebProcessor bổ sung thông tin về ứng dụng khách đưa ra yêu cầu tạo ra thông báo này
  • MemoryProcessor bổ sung thông tin về việc sử dụng bộ nhớ
  • GitProcessor bổ sung thông tin về các cam kết Git có liên quan

Và, tất nhiên, bạn có thể xây dựng bộ xử lý của riêng mình bằng cách tạo các lớp mới triển khai ProcessorInterface

Tóm lại, bộ xử lý nhằm trả lời câu hỏi "Những gì khác nên được ghi lại?"

Trình định dạng độc thoại

Cuối cùng, các trình định dạng nhằm trả lời câu hỏi "Thư nên được lưu trữ như thế nào?"

Trình định dạng hoạt động cùng với trình xử lý để thêm thông tin định dạng xung quanh thư, để chúng có thể được hiển thị tốt hơn trong một môi trường cụ thể

Chẳng hạn, nếu bạn đang gửi nhật ký qua email, HTML được tạo thủ công độc đáo sẽ giúp nhật ký dễ đọc hơn trong ứng dụng email

Độc thoại trong hành động

Ok, nó đã được rất nhiều lý thuyết phải không?

Quay trở lại với ví dụ nhỏ của chúng ta, điều đầu tiên chúng ta cần là một

[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
0

PHP Fatal error:  Something went wrong in php shell code on line 1
5

Nhưng mà. các bản ghi sẽ được lưu trữ ở đâu?

Hãy thêm một

PHP Fatal error:  Something went wrong in php shell code on line 1
6

Bây giờ chúng tôi có một trình xử lý sẽ lưu mọi bản ghi nhật ký vào tệp

[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
6 trong cùng thư mục với ứng dụng của chúng tôi

Những gì chúng ta cần làm bây giờ là gắn Trình xử lý này vào Trình ghi, như thế này

PHP Fatal error:  Something went wrong in php shell code on line 1
7

Và bây giờ, hãy viết thông điệp tường trình đầu tiên bằng Monolog

PHP Fatal error:  Something went wrong in php shell code on line 1
8

Phương thức

[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
7 chỉ là một trong số nhiều phương thức có thể được gọi để báo hiệu mức độ nghiêm trọng của thông báo

Nếu bạn khởi động một máy chủ web cục bộ (

[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
8) và truy cập vào

trigger_error('Something went wrong', E_USER_ERROR);
7, bạn sẽ tìm thấy nội dung như thế này trong tệp
[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
6 của mình

PHP Fatal error:  Something went wrong in php shell code on line 1
9

Bây giờ, giả sử bạn không chỉ muốn lưu thông tin này vào tệp cục bộ mà còn gửi thông tin đó cho quản trị viên qua email. Bạn có thể làm điều đó bằng cách sử dụng

php -S localhost:8000 -d display_errors=1
1, như thế này


trigger_error('Something went wrong', E_USER_ERROR);
0

Nếu bạn làm mới trang của mình, bạn sẽ thấy một mục mới trong tệp của mình nhưng không có email trong hộp thư đến của bạn. Tại sao điều này xảy ra?

php -S localhost:8000 -d display_errors=1
1 được thiết kế để chỉ phản ứng với các thông báo lỗi theo mặc định, vì vậy bạn có hai tùy chọn ở đây;


trigger_error('Something went wrong', E_USER_ERROR);
1

Hoặc bạn có thể yêu cầu

php -S localhost:8000 -d display_errors=1
3 của mình cũng tính đến các tin nhắn của
[Wed Apr 20 15:15:21 2022] PHP 7.4.3 Development Server (http://localhost:8000) started
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Accepted
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34616 Accepted
[Wed Apr 20 15:15:25 2022] PHP Fatal error:  Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 [500]: GET / - Something went wrong in /mnt/c/Users/mchoj/PhpstormProjects/Honeybadger/index.php on line 2
[Wed Apr 20 15:15:25 2022] 127.0.0.1:34614 Closing
[Wed Apr 20 15:15:26 2022] 127.0.0.1:34620 Accepted
[Wed Apr 20 15:15:29 2022] 127.0.0.1:34620 Closed without sending a request; it was probably just an unused speculative preconnection
7


trigger_error('Something went wrong', E_USER_ERROR);
2

Trong trường hợp này, hộp thư đến của bạn sẽ chứa một thông báo tương tự như sau

Chức năng ghi lỗi trong PHP là gì?

Như bạn có thể thấy, một trình định dạng HTML đã được sử dụng để tạo ra email tuyệt vời này mà bạn không cần phải làm gì cả. Bạn đã bán ý tưởng sử dụng Monolog chưa?. )

Bạn có thể tiếp tục thêm trình xử lý, trình định dạng và bộ xử lý khi bạn thấy phù hợp;

Tích hợp với Honeybadger

Bây giờ, nếu bạn đã quen thuộc với Honeybadger, thì bạn đã biết tất cả những lợi ích mà nó có thể mang lại cho nhóm phát triển của bạn

Sẽ thật tuyệt nếu tích hợp nó vào nhật ký do Monolog cung cấp của bạn phải không?

Tất cả những gì nó cần là một phiên bản của Honeybadger\LogHandler với tư cách là Trình xử lý Monolog

Bắt đầu bằng cách thêm thư viện cần thiết


trigger_error('Something went wrong', E_USER_ERROR);
3

Sau đó cập nhật mã của bạn để trông như thế này


trigger_error('Something went wrong', E_USER_ERROR);
4

Và, sau khi làm mới lại trang, bạn sẽ tìm thấy một thông báo như thế này trên bảng điều khiển Honeybadger của mình

Chức năng ghi lỗi trong PHP là gì?
.

Dự án của bạn có dựa trên Laravel không? . Đọc ở đây để có hướng dẫn tích hợp đầy đủ

Sự kết luận

Như chúng ta đã quen khi nói đến PHP, có những giải pháp nhanh chóng mà bạn có thể thực hiện trong tích tắc, và có những giải pháp chuyên nghiệp cần nhiều nỗ lực hơn một chút, nhưng sự khác biệt về lâu dài khiến chúng rất đáng để đầu tư.

Mục đích của ghi nhật ký lỗi là gì?

Nhật ký lỗi là công cụ có thể giúp bạn khắc phục các lỗi thường gặp bằng cách phát triển chiến lược phát hiện và sửa những lỗi này trước khi bạn nộp bài tập. What is an error log? An error log is a personalized document that lists your mistakes and how to correct them.

Chức năng lỗi PHP là gì?

Các hàm báo lỗi được dùng để xử lý và ghi nhật ký lỗi . Các chức năng lỗi cho phép chúng tôi xác định các quy tắc xử lý lỗi của riêng mình và sửa đổi cách các lỗi có thể được ghi lại. Các chức năng ghi nhật ký cho phép chúng tôi gửi tin nhắn trực tiếp đến các máy, email hoặc nhật ký hệ thống khác.

Nhật ký lỗi trong PHP ở đâu?

Vị trí của tệp nhật ký lỗi có thể được đặt thủ công trong php. tập tin ini. Trên máy chủ Windows, trong IIS, nó có thể giống như "'error_log = C. \log_files\php_errors. log '" trong Linux, nó có thể là giá trị của "'/var/log/php_errors.

Các phương pháp khác nhau được sử dụng để ghi lỗi trong PHP là gì?

Hướng dẫn cơ bản về ghi nhật ký lỗi PHP .
error_log()
trigger_error()
nhật ký hệ thống()
set_error_handler()