Nhật ký PHP vào tệp

Vì vậy, khi chúng tôi gặp lỗi trong mã của mình, chúng tôi có thể tìm thấy chúng chính xác ở đâu? . nội tuyến với việc thực thi chương trình, trong nhật ký hệ thống hoặc trong các công cụ theo dõi lỗi như Rollbar

Lỗi nội tuyến

Theo mặc định, bất cứ khi nào xảy ra lỗi hoặc ngoại lệ, PHP sẽ gửi thông báo lỗi trực tiếp cho người dùng qua. Trong môi trường dòng lệnh, điều này có nghĩa là các lỗi được hiển thị trong thiết bị đầu cuối. Trong môi trường web, các lỗi và ngoại lệ được hiển thị trực tiếp trong trình duyệt

Mặc dù hành vi này hữu ích để gỡ lỗi sự cố trong môi trường phát triển, nhưng hành vi này nên bị vô hiệu hóa trong môi trường sản xuất vì lý do bảo mật. Để thực hiện việc này, hãy mở tệp cấu hình PHP cho môi trường bạn đang làm việc—thường được tìm thấy trong một đường dẫn giống như /etc/php/. Môi trường. /php. ini—và thay đổi chỉ thị display_errors thành Tắt

; This directive controls whether or not and where PHP will output errors,  
; notices and warnings too. Error output is very useful during development, but  
; it could be very dangerous in production environments. Depending on the code  
; which is triggering the error, sensitive information could potentially leak  
; out of your application such as database usernames and passwords or worse.  
; For production environments, we recommend logging errors rather than  
; sending them to STDOUT.  
; Possible Values:  
; Off = Do not display any errors  
; stderr = Display errors to STDERR [affects only CGI/CLI binaries!]  
; On or stdout = Display errors to STDOUT  
; Default Value: On  
; Development Value: On  
; Production Value: Off  
; //php.net/display-errors
display_errors = On

tệp nhật ký

Mặc dù kết xuất lỗi thành STDOUT rất tốt để gỡ lỗi trong môi trường phát triển khi chúng xảy ra, nhưng nó không hữu ích lắm trong môi trường sản xuất. Đây là nơi nhật ký lỗi phát huy tác dụng. Theo mặc định, PHP không ghi lại bất kỳ lỗi nào, điều đó có nghĩa là giá trị này phải được đặt rõ ràng. Để làm như vậy, hãy mở cùng một tệp cấu hình PHP được tham chiếu ở trên trong trình chỉnh sửa yêu thích của bạn và tìm lệnh error_log

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; //php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog [Event Log on Windows].
error_log = syslog

Có hai giá trị có thể có cho error_log. một tệp nhật ký tùy chỉnh và nhật ký hệ thống. Nếu nhật ký hệ thống được sử dụng, thì tất cả các lỗi PHP sẽ được gửi trực tiếp đến tệp nhật ký hệ thống mặc định—trong Linux, đây thường là /var/log/syslog. Phương pháp dễ quản lý hơn là sử dụng tệp nhật ký tùy chỉnh. Bằng cách này, bạn có thể tách biệt nhật ký của ứng dụng PHP của mình với phần còn lại của nhật ký hệ thống, điều này có thể giúp việc gỡ lỗi dễ dàng hơn đáng kể

Đăng nhập Laravel

Mặc dù trình ghi nhật ký hệ thống mặc định của PHP rất hữu ích cho các ứng dụng đặt riêng, nhưng điều quan trọng cần lưu ý là nhiều khung ứng dụng cung cấp các cơ chế ghi nhật ký tích hợp sẵn của riêng chúng. Một ví dụ tuyệt vời về điều này là Laravel framework. Trong Laravel, phương thức ghi nhật ký có thể được thay đổi trong tùy chọn nhật ký của tệp cấu hình ứng dụng — được tìm thấy trong config/app. php

/*
|--------------------------------------------------------------------------
| Logging Configuration
|--------------------------------------------------------------------------
|
| Here you may configure the log settings for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Settings: "single", "daily", "syslog", "errorlog"
|
*/
'log' => env['APP_LOG', 'single'],

Theo mặc định, Laravel duy trì một tệp nhật ký duy nhất tại storage/logs/laravel. log trong thư mục dự án, thay vì tùy chọn error_log được xác định từ cấu hình PHP toàn cầu

Đăng nhập Symfony

Bởi vì Laravel được xây dựng dựa trên Symfony, chúng chia sẻ cùng một cơ chế ghi nhật ký lõi—mặc dù cấu hình khác nhau giữa hai khung. Đăng nhập Symfony và Laravel đều được thực hiện bằng Monolog, thư viện ghi nhật ký PHP của bên thứ ba có thể được sử dụng để tạo và lưu trữ nhật ký theo nhiều cách

Theo mặc định, nhật ký Symfony được lưu trữ trong var/log/dev. nhật ký và var/log/prod. log trong thư mục dự án, tùy thuộc vào môi trường, nhưng những giá trị mặc định này có thể được thay đổi trong tệp cấu hình gói Monolog có tại config/packages/monolog. php

$container->loadFromExtension['monolog', array[
    'handlers' => array[
        'file_log' => array[
            'type'  => 'stream',
            'path'  => '%kernel.logs_dir%/%kernel.environment%.log',
            'level' => 'debug',
        ],
        'syslog_handler' => array[
            'type'  => 'syslog',
            'level' => 'error',
        ],
    ],
]];

Nhật ký PHP trông như thế nào?

Vì vậy, chính xác các bản ghi PHP trông như thế nào?

Dec 10 04:04:38 scotchbox apache2: PHP Parse error:  syntax error, unexpected end of file in /var/www/public/index2.php on line 4

Tóm lại, dòng nhật ký ở trên có thể được chia thành bốn phần. ngày, tên máy chủ, quy trình và thông báo lỗi. Bất cứ khi nào gặp lỗi hoặc ném ngoại lệ chưa bắt được, thông báo lỗi sẽ được in cùng với ngày, tên máy chủ và siêu dữ liệu quy trình để giúp xác định chính xác điều gì đã xảy ra, xảy ra ở đâu và xảy ra khi nào

Sơ lược về cấp độ nhật ký

Điều quan trọng cần lưu ý là, trong PHP, có một số mức nhật ký có thể bị xóa hoặc nâng lên. Mặc dù các mức nhật ký này được xác định bởi chính PHP, nhưng việc hiểu chúng là gì và ý nghĩa của chúng là một bước quan trọng để có thể chẩn đoán các sự cố khi chúng xảy ra

Khi display_errors được đặt thành Bật, có thể hữu ích khi ẩn và hiển thị rõ ràng các mức nhật ký cụ thể để bạn có thể tập trung vào một tác vụ tại một thời điểm, chẳng hạn như lỗi nghiêm trọng hoặc dọn dẹp cảnh báo. Điều này có thể được thực hiện bằng cách sử dụng phương thức error_reporting tích hợp

// Report simple running errors
error_reporting[E_ERROR | E_WARNING | E_PARSE];

// Report all errors except E_NOTICE
error_reporting[E_ALL & ~E_NOTICE];

Phương thức này chấp nhận một giá trị số nguyên cho PHP biết lỗi nào sẽ hiển thị và lỗi nào cần bỏ qua. Thông qua việc sử dụng các toán tử bitwise [. nghĩa là HOẶC, & nghĩa là VÀ, và ~ nghĩa là KHÔNG], chúng ta có thể xác định rõ ràng và dễ dàng những lỗi nào chúng ta muốn xem

Dưới đây là một số cấp độ nhật ký phổ biến nhất. Để biết thêm thông tin về các cấp độ nhật ký [có khá nhiều trong số chúng], hãy xem tài liệu chính thức của PHP

Làm cách nào để đăng nhập vào một tệp trong PHP?

tệp ini. Có thể thêm lệnh ini_set[“log_errors”, TRUE] vào tập lệnh php để cho phép ghi lỗi khi đăng nhập php . Lệnh ini_set['error_log', $log_file] có thể được thêm vào tập lệnh php để đặt tệp ghi nhật ký lỗi. Ngoài ra, lệnh gọi hàm error_log[$error_message] có thể được sử dụng để ghi thông báo lỗi vào tệp đã cho.

Tệp nhật ký 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.

Làm cách nào để lấy dữ liệu từ tệp nhật ký trong PHP?

Các chức năng ghi nhật ký của PHP . Các hàm này tạo nhật ký chứa chuỗi thông báo bạn cung cấp. Hàm syslog[] sẽ sử dụng cấu hình trong rsyslog của bạn. explicitly calling PHP's error_log[] or syslog[] function within your code. These functions create logs containing the message string you provide. The syslog[] function will use the configuration in your rsyslog.

Làm cách nào để tạo tệp nhật ký lỗi trong PHP?

Phương pháp 1. Sử dụng. .
Mở. htaccess và chèn đoạn mã sau. bật php_flag log_errors. php_value error_reporting 32767. .
Tạo một tệp có tiêu đề error_log. txt trong thư mục public_html
lưu và đóng tập tin
Tất cả các bản ghi lỗi PHP sẽ được báo cáo trong error_log. tập tin txt

Chủ Đề