Nhật ký :: thông tin trong Laravel là gì?

Một dự án đang được tiến hành, chắc chắn sẽ có một vài sai sót. Xử lý lỗi và ngoại lệ đã được định cấu hình cho bạn khi bạn bắt đầu một dự án Laravel mới. Thông thường, trong môi trường cục bộ, chúng ta cần xem lỗi cho mục đích gỡ lỗi. Chúng tôi cần ẩn những lỗi này với người dùng trong môi trường sản xuất. Điều này có thể đạt được với biến APP_DEBUG được đặt trong tệp môi trường. env được lưu trữ ở thư mục gốc của ứng dụng

Đối với môi trường cục bộ, giá trị của APP_DEBUG phải là true nhưng đối với môi trường sản xuất, giá trị này cần được đặt thành false để ẩn lỗi

Lưu ý - Sau khi thay đổi biến APP_DEBUG, bạn nên khởi động lại máy chủ Laravel

Ghi nhật ký là một cơ chế quan trọng để hệ thống có thể ghi nhật ký các lỗi được tạo ra. Nó rất hữu ích để cải thiện độ tin cậy của hệ thống. Laravel hỗ trợ các chế độ ghi nhật ký khác nhau như chế độ đơn, hàng ngày, nhật ký hệ thống và nhật ký lỗi. Bạn có thể thiết lập các chế độ này trong config/app. tập tin php

Ghi nhật ký là cách các nhà phát triển hiểu tại sao các ứng dụng bị lỗi và cách chúng cải thiện. Trong bài viết này, bạn sẽ tìm hiểu về cách triển khai và xử lý ghi nhật ký cho các ứng dụng Laravel

Ngày 13 tháng 7 năm 2022

Keanan Koppenhaver

Kiến trúc sư kỹ thuật

Tổng quan

Tổng quan

Giám sát Kubernetes
Làm cho đơn giản

Bắt đầu dùng thử miễn phí

Không cần thẻ

Trong bất kỳ ứng dụng nào, nhà phát triển cần có khả năng xem điều gì đang xảy ra trong khi ứng dụng đang được sử dụng để gỡ lỗi các sự cố khi chúng phát sinh và xác định các cơ hội để cải thiện. Với mục đích này, các nhà phát triển sử dụng tính năng ghi nhật ký để hiểu rõ hơn về những gì đang diễn ra bên trong ứng dụng khi ứng dụng đang được sử dụng

Khi triển khai bất kỳ giải pháp ghi nhật ký nào, điều quan trọng là phải có đủ nhật ký để có thể thu thập thông tin và số liệu quan trọng nhưng không ghi nhật ký quá mức để mọi thông tin quan trọng bị mất trong biển dữ liệu

Trong bài viết này, bạn sẽ xem cách triển khai đăng nhập trong khung PHP phổ biến Laravel. Laravel là một khung công tác PHP Model-View-Controller cho phép các nhà phát triển tạo mọi thứ từ các trang web quy mô nhỏ đến các ứng dụng cấp doanh nghiệp một cách nhanh chóng và dễ dàng

Sau khi tìm hiểu về cách Laravel giúp các nhà phát triển quản lý nhật ký của họ, bạn sẽ xem qua một số phương pháp hay nhất và công cụ cụ thể mà bạn cần để gỡ lỗi ứng dụng Laravel

Bắt đầu với Logs trong Laravel

Khi bạn bắt đầu thực hiện ghi nhật ký trong ứng dụng Laravel của mình, thách thức đầu tiên là quyết định những gì cần ghi. Giống như mã nhận xét, nhận xét ở một số vị trí nhất định trong cơ sở mã có thể hữu ích, trong khi nhận xét trên mọi dòng có thể làm lộn xộn cơ sở mã, gây khó khăn khi làm việc với

Các ưu tiên ghi nhật ký phổ biến trong các ứng dụng bao gồm các phản hồi API trong các cuộc gọi đến các dịch vụ bên ngoài, mọi truy vấn hoặc hành vi của ứng dụng đang diễn ra chậm hơn dự kiến ​​và ở mức tối thiểu, các thông báo và lỗi do Laravel hoặc PHP tạo ra. Mục tiêu của nhật ký là gấp đôi. nắm bắt các lỗi để có thể sửa lỗi ngay cả khi chúng không thể được sao chép trong thời gian thực và xác định các khu vực cần cải thiện trong ứng dụng, đó là nơi các thông báo và cảnh báo cấp PHP có ích

Các sự kiện cần được ghi lại có nhiều mức độ nghiêm trọng khác nhau và hầu hết các trình ghi nhật ký, bao gồm cả của Laravel, xác định cái được gọi là cấp độ nhật ký. Các mức thỏa thuận này được xác định trong một tài liệu có tên là RFC 5424 và có sẵn trong. Chúng bao gồm khẩn cấp, cảnh báo, nghiêm trọng, lỗi, cảnh báo, thông báo, thông tin và gỡ lỗi và được định nghĩa trong Laravel như bên dưới


use Illuminate\Support\Facades\Log;
 
Log::emergency[$message];
Log::alert[$message];
Log::critical[$message];
Log::error[$message];
Log::warning[$message];
Log::notice[$message];
Log::info[$message];
Log::debug[$message];

You can call any of these methods to log a message for the corresponding level. By default, the message will be written to the default log channel as configured by your logging configuration file.

Khi bạn đang sử dụng mặt tiền nhật ký tích hợp của Laravel, Laravel sử dụng các kênh nhật ký như một cách để ghi lại nơi bạn gửi thông tin của mình. Các kênh nhật ký có thể thực hiện nhiều việc, bao gồm gửi thông báo tường trình tới nhật ký hệ thống tiêu chuẩn hoặc đẩy nhật ký tới Papertrail hoặc thậm chí gửi các mục nhật ký dưới dạng thông báo Slack [mặc dù điều này có lẽ nên được dành riêng cho các thông báo tường trình thực sự quan trọng]

Tự động thu thập mọi thứ được đăng nhập trong cụm của bạn

Theo dõi tình trạng của cụm của bạn và khắc phục sự cố nhanh hơn với bảng điều khiển dựng sẵn chỉ hoạt động

Tìm hiểu thêm Đặt bản demo

Thực tiễn tốt nhất về ghi nhật ký Laravel

Khi sử dụng log facade mặc định của Laravel, tương đối đơn giản để bắt đầu chèn các câu lệnh log vào các điểm quan trọng trong ứng dụng của bạn;

Cấu trúc, lưu trữ và xuất nhật ký

Tùy thuộc vào tần suất bạn ghi vào tệp nhật ký, chúng có thể tăng kích thước nhanh chóng đến mức bất kỳ ứng dụng nào được sử dụng để đọc hoặc lọc qua chúng có thể bắt đầu gặp khó khăn trong việc phân tích lượng thông tin được lưu trữ. Hầu hết các nhật ký sử dụng khái niệm xoay vòng nhật ký, trong đó các tệp nhật ký được tự động nén, lưu trữ, đổi tên hoặc xóa khi chúng đạt đến một kích thước nhất định hoặc theo lịch trình. Điều này đảm bảo rằng không có tệp nhật ký nào quá lớn để trở nên hữu ích. Nếu các tệp nhật ký được lưu trữ hoặc lưu trữ ở một nơi khác, điều đó có nghĩa là chúng có thể được truy cập nếu dữ liệu lịch sử thực sự cần thiết, nhưng chỉ thông tin cập nhật nhất [và do đó, có khả năng hữu ích nhất] được giữ lại khi có thể

Về cơ bản, hãy sử dụng thư viện Monolog và nó trở thành phần lớn tiêu chuẩn trong hệ sinh thái PHP. Thay vì ghi nhật ký theo cách thủ công, Monolog cho phép nhà phát triển dễ dàng ghi và quản lý tệp nhật ký của họ bằng cách cung cấp giao diện chuẩn để ghi nhật ký. Điều này cho phép các nhà phát triển tạo các trình ghi nhật ký ghi vào các kênh nhật ký khác nhau và tập trung vào logic ứng dụng của họ thay vì phải dành thời gian không cần thiết để viết mã ghi nhật ký tùy chỉnh

Sau khi kiểm soát được dung lượng lưu trữ, bạn cần một cách để đọc nhật ký của mình. Mặc dù hầu hết các nhật ký được lưu trữ ở dạng văn bản thuần túy và có thể được mở trong bất kỳ trình soạn thảo văn bản nào, trình đọc nhật ký chuyên dụng có các tính năng mà trình soạn thảo văn bản tiêu chuẩn không có. Ví dụ: có một gói dành riêng cho Laravel có tên là Laravel Log Viewer, có thể được cài đặt qua Trình soạn thảo, có thể hiển thị nhật ký của bạn thông qua một tuyến đường hoặc chế độ xem tùy chỉnh và có thể hoạt động hiệu quả hơn

Sử dụng Laravel Log Reader để phân tích nhật ký hiệu quả hơn

Cấu hình/ghi nhật ký của Laravel. tệp php

The config/logging.php file is, unsurprisingly, where the majority of the logging for your Laravel application is configured. If you create a brand-new Laravel app, you’ll see that there are default values in there for many of the log settings that Laravel supports, with a default log channel as well as sample configurations for some of the others. For example, at the top of the file, you’ll see something like the following:


/*
    |--------------------------------------------------------------------------
    | Default Log Channel
    |--------------------------------------------------------------------------
    |
    | This option defines the default log channel that gets used when writing
    | messages to the logs. The name specified in this option should match
    | one of the channels defined in the "channels" configuration array.
    |
    */

    'default' => env['LOG_CHANNEL', 'stack'],

This code sets up the default log channel for Laravel. If you have a value for LOG_CHANNEL in your .env file, it will use that; otherwise, it will fall back to the . Below this default value is an array of all the various log channels that can be configured.

While changing something about what your application is logging needs to happen surrounding the code that you want logged, any changes to how your application is logging should be made and centralized in the config/logging.php file. This way, other developers know where to look for these settings should they need to be changed in the future.

Mối quan tâm về an ninh

Một cách phổ biến mà tất cả các công ty [bao gồm cả những công ty nổi tiếng] vô tình làm rò rỉ thông tin là thông qua ghi nhật ký. Nếu bạn không cẩn thận với tư cách là nhà phát triển, thì thông tin cá nhân nhạy cảm, bao gồm cả mật khẩu, có thể được ghi vào tệp nhật ký, tệp này thường được lưu giữ ở mức độ bảo mật kém hơn so với mật khẩu được lưu trữ trong cơ sở dữ liệu hoặc một số hệ thống khác

Ví dụ: nếu bạn đang cố gỡ lỗi thông tin liên quan đến người dùng và đăng xuất toàn bộ đối tượng người dùng, thông tin về người dùng đó có thể được lưu trữ trong nhật ký. Nếu các nhật ký này bị rò rỉ hoặc truy cập trái phép trong tương lai, thì tất cả thông tin của người dùng đã đăng nhập đó cũng bị rò rỉ. Tùy thuộc vào thông tin bạn đang lưu trữ về người dùng, điều này có thể có ý nghĩa cá nhân nghiêm trọng cũng như có khả năng tạo ra trách nhiệm pháp lý và tài chính cho chủ sở hữu ứng dụng. May mắn thay, có các gói PHP mà bạn có thể đưa vào ứng dụng của mình để che dấu dữ liệu này. Tuy nhiên, thỉnh thoảng vẫn nên kiểm tra nhật ký của bạn để đảm bảo không có thông tin nhạy cảm nào được lưu trữ ở đó

Các công cụ phổ biến của bên thứ ba để ghi nhật ký

Thiết lập ghi nhật ký Laravel mặc định rất dễ bắt đầu, nhưng khi các ứng dụng trở nên phức tạp và phân tán hơn, việc ghi nhật ký cơ bản này đôi khi không đủ để cung cấp cho nhà phát triển thông tin họ cần để giữ cho ứng dụng của họ chạy trơn tru

Phân tích nhật ký bằng Papertrail

Các nhà phát triển thường sử dụng các công cụ như Papertrail để theo dõi nhật ký của họ hoặc New Relic để cung cấp cho họ khả năng quan sát những gì đang xảy ra với ứng dụng của họ. Tuy nhiên, khi bạn triển khai phức tạp trên cơ sở hạ tầng liên quan đến Kubernetes, mọi thứ sẽ phức tạp hơn một chút. Đó là nơi ContainIQ có thể trợ giúp

Sử dụng ContainIQ cho các ứng dụng Laravel

Là một giải pháp ghi nhật ký, ContainIQ cho phép bạn tìm hiểu sâu hơn về mã và cơ sở hạ tầng của mình bằng cách giám sát ứng dụng của bạn trực tiếp từ nhân, cung cấp cho các nhà phát triển khả năng ghi nhật ký cụ thể hơn ở cấp cụm và cấp ứng dụng. Với các công cụ ghi nhật ký khác không phải là Kubernetes gốc, bạn có thể gặp một số phần nhất định trong lỗi ghi nhật ký ứng dụng của mình khi lỗi thực sự nằm ở cấp độ cơ sở hạ tầng. Điều này có thể khiến bạn rơi vào hố sâu của cuộc điều tra mà cuối cùng sẽ không mang lại kết quả

Ngoài việc cho phép các nhà phát triển xác định vấn đề nhanh hơn, ContainIQ còn giúp các nhà phát triển quyết định điều gì cần chú ý và điều gì có thể bỏ qua một cách an toàn. Sử dụng dữ liệu lịch sử, các nhóm có thể đặt cảnh báo thông minh hơn để tránh mệt mỏi khi cảnh báo và đảm bảo chỉ những thông tin cần được giải quyết mới đến được với các nhà phát triển, những người có thể thực hiện các thay đổi cần thiết

Sau khi cảnh báo kích hoạt và cần thực hiện thay đổi, ContainIQ sẽ đưa tất cả thông tin cần thiết vào một nơi. Các ứng dụng Laravel ngày nay rất phức tạp và việc theo dõi giải pháp cho sự cố đã ghi thường liên quan đến việc so sánh nhiều bộ nhật ký cho ứng dụng, cơ sở hạ tầng của bạn và đôi khi là cả các nhà cung cấp bên ngoài. Tuy nhiên, ContainIQ có thể lưu trữ dữ liệu từ nhiều nguồn trong một nền tảng, cho phép người dùng tương quan các sự kiện từ nhiều bộ nhật ký mà không cần phải so sánh dấu thời gian theo cách thủ công

Điều này đặc biệt quan trọng khi cố gắng tìm ra lý do tại sao một số lỗi nhất định lại xảy ra trong bối cảnh cơ sở hạ tầng Kubernetes của bạn. Vì ContainIQ có thể giúp bạn trực quan hóa toàn bộ thiết lập Kubernetes của mình và xác định chính xác các nút cụ thể mà bạn thấy lỗi, nên bạn có thể nhanh chóng tìm ra điều gì đang xảy ra và giải quyết vấn đề

Cho dù ứng dụng của bạn trở nên phức tạp hơn mức có thể được gỡ lỗi một cách hiệu quả bằng tính năng ghi nhật ký mặc định của Laravel hay liệu việc gỡ lỗi và giải quyết các sự cố có mất quá nhiều thời gian và tạo ra quá nhiều điều không chắc chắn hay không, ContainIQ có thể là bước hỗ trợ bạn cần để đưa ứng dụng ghi nhật ký Laravel của mình lên hàng đầu.

kết thúc

Nhật ký là một tính năng quan trọng trong bất kỳ ngăn xếp ứng dụng nào và các ứng dụng được xây dựng bằng Laravel cũng không ngoại lệ. Mặc dù Laravel cung cấp một mặt tiền nhật ký mạnh mẽ có thể xử lý ghi nhật ký ở mức cơ sở và có thể đẩy dữ liệu nhật ký đó đến nhiều nguồn khác nhau, nhưng khi ứng dụng của bạn trở nên phức tạp hơn và được triển khai trên cơ sở hạ tầng như Kubernetes, bạn cần một quy trình cụ thể hơn.

ContainIQ cung cấp một bộ công cụ ghi nhật ký trên phạm vi rộng và với bộ công cụ này, bạn có thể chắc chắn rằng các nhà phát triển của mình đang có được thông tin chi tiết cần thiết để gỡ lỗi và cải thiện ứng dụng của họ một cách nhanh chóng và chính xác

Bắt đầu 14 ngày miễn phí dùng thử ContainIQ

Bắt đầu dùng thử miễn phí Đặt bản demo

Không cần thẻ

Keanan Koppenhaver

Kiến trúc sư kỹ thuật

Keanan là CTO tại Alpha Particle, nơi anh ấy giúp các nhà xuất bản hiện đại hóa nền tảng công nghệ của họ và xây dựng đội ngũ nhà phát triển của họ. Trong suốt sự nghiệp của mình, anh ấy đã đảm nhiệm nhiều vai trò kỹ thuật bao gồm Kiến trúc sư kỹ thuật và Nhà phát triển chính. Keanan là Kiến trúc sư giải pháp được chứng nhận về dịch vụ web của Amazon

ĐỌC THÊM

bài viết liên quan

Tìm cách để tìm hiểu thêm?

Thông tin đăng nhập trong Laravel là gì?

Việc ghi nhật ký Laravel dựa trên "kênh". Mỗi kênh đại diện cho một cách ghi thông tin nhật ký cụ thể . Ví dụ: kênh đơn ghi tệp nhật ký vào một tệp nhật ký duy nhất, trong khi kênh chùng gửi thông báo nhật ký tới Slack. Thông báo nhật ký có thể được ghi vào nhiều kênh dựa trên mức độ nghiêm trọng của chúng.

Công dụng của cái ..... là gì. Trong Laravel?

:: is called as scope resolution operator [AKA Paamayim Nekudotayim]. This operator is used để chỉ phạm vi của một số khối hoặc bối cảnh chương trình như lớp, đối tượng, không gian tên, v.v. . Đối với tham chiếu này, một mã định danh được sử dụng với toán tử này để truy cập hoặc tạo lại mã bên trong phạm vi đó.

Làm cách nào để xem nhật ký trong Laravel?

Theo mặc định, Laravel được định cấu hình để tạo một tệp nhật ký duy nhất cho ứng dụng của bạn và tệp này được lưu trữ trong app/storage/logs/laravel. nhật ký .

Các cấp log của Laravel là gì?

Trình ghi nhật ký cung cấp tám cấp độ ghi nhật ký được xác định trong RFC 5424. khẩn cấp, cảnh báo, nghiêm trọng, lỗi, cảnh báo, thông báo, thông tin và gỡ lỗi .

Chủ Đề