Đầu ra bảng điều khiển nhật ký python vào tệp
Trong bài viết này, bạn sẽ tìm hiểu về mô-đun ghi nhật ký python để ghi nhật ký sự kiện và tại sao ghi nhật ký lại tốt hơn in Show
Phần được bảo hiểm
💡 Nếu bạn thích xem video Youtube hơn đọc blog, hãy nhấp vào liên kết này hoặc kéo xuống dưới cùng Giới thiệu về ghi nhật ký PythonNói chung, Ghi nhật ký là một hoạt động quan trọng trong bất kỳ ứng dụng phát triển phần mềm không tầm thường nào Nó thông báo cho bạn về luồng sự kiện trong toàn bộ ứng dụng của bạn với siêu dữ liệu hữu ích khác như thời gian xảy ra sự kiện, mức độ nghiêm trọng của sự kiện, số dòng ghi sự kiện, chức năng hoặc mô-đun trong đó sự kiện Bạn có thể dễ dàng kiểm soát loại thông tin mà bạn quyết định đưa vào tệp nhật ký của chúng tôi cũng như cách thông tin đó hiển thị Chúng ta có thể không đạt được điều tương tự với các câu lệnh in không?In ra những thứ chắc chắn là hữu ích. Nó chắc chắn sẽ đủ điều kiện là một trong những chức năng được sử dụng rộng rãi nhất trong bất kỳ ngôn ngữ lập trình nào. Nó là một công cụ tuyệt vời để truyền tải thông tin liên quan đến người lập trình trong quá trình thực hiện chương trình Nó cũng là một công cụ sửa lỗi tuyệt vời. Hãy xem một ví dụ
Khi bạn chạy đoạn mã trên, bạn sẽ nhận được đầu ra sau
Có rất nhiều thông tin ở đây. Bạn có số dòng mà trình thông dịch python đã phát hiện lỗi, câu lệnh python đã tạo ra lỗi và cả bản chất của lỗi. Trong trường hợp trên, đó là một 5Giả sử bạn không muốn đưa ra lỗi 6. Trong trường hợp đó, bạn có thể sử dụng khối thử ngoại trừ
Khi bạn thực thi đoạn mã trên, nó sẽ in phép chia cho 0 Thông thường, bạn nên xử lý các ngoại lệ trong mã của mình bằng cách sử dụng thử và ngoại trừ hơn là để nó thất bại. Tại sao? Nhưng hiện tại chúng tôi đang thiếu các chi tiết liên quan hữu ích để gỡ lỗi. Chúng tôi đang thiếu tên tệp và số dòng xảy ra lỗi. Để giải quyết vấn đề này, chúng tôi có thể đưa thư viện 6 trở lại để nắm bắt nhiều chi tiết khác về ngoại lệ
Bằng cách này, chúng tôi không chỉ nhận được thông tin về python 6 mà còn cho phép dòng mã của chúng tôi kết thúc thành công mà không gặp sự cốBất chấp tất cả những lợi ích rõ ràng, In ấn vẫn không phải là công cụ tốt nhất để ghi nhật ký Tại sao In không đủ để Ghi nhật ký?Dưới đây là 4 nguyên nhân khiến bản in không phù hợp 1. Quá trình in không cung cấp cho chúng tôi dấu thời gian của lỗi Một trong những thông tin quan trọng mà bản in bỏ lỡ là dấu thời gian xảy ra lỗi cụ thể. Điều này có thể chứng minh là một yếu tố lớn trong khi gỡ lỗi ứng dụng của chúng tôi Nó có thể không quan trọng đối với các đoạn mã nhỏ mà chúng tôi chạy và kiểm tra trong thời gian thực. Nhưng đối với các ứng dụng lớn hơn, việc thiếu dấu thời gian cho một lỗi chắc chắn sẽ gây ảnh hưởng rất lớn. Chắc chắn chúng ta có thể sử dụng mô-đun 9 để thêm phần thông tin bổ sung đó. Nhưng sau đó, chúng ta sẽ làm cho cơ sở mã của mình trở nên lộn xộn hơn bằng cách thêm các đoạn mã không liên quan để bù cho thông tin còn thiếu thay vì sử dụng thứ đã giải quyết mọi thứ chúng ta cần - ghi nhật ký2. In ra bảng điều khiển là cách làm không tốt cho các ứng dụng quy mô lớn Hãy tưởng tượng điều này. Bạn đã viết một thư viện Python mà những người khác hiện đang sử dụng để giải quyết một mục đích nào đó. Bạn rất hào phóng với việc sử dụng chức năng in trong cơ sở mã của mình. Vì vậy, người dùng sẽ thấy các loại câu lệnh in khác nhau mà họ có thể sẽ không nhận ra Đây là thực hành rất xấu và do đó nên tránh 3. Không thể lưu tin nhắn in vào mọi loại tệp Khi bạn in tin nhắn, trước tiên nó được chuyển đổi thành chuỗi văn bản. Bạn có thể sử dụng đối số tệp trong bản in để lưu thư của mình vào một tệp. Tuy nhiên, nó phải là một đối tượng có phương thức 0. Do đó không thể ghi tin nhắn vào tệp nhị phân4. Khó phân loại báo in Hãy tưởng tượng một tệp nhật ký chứa tất cả các loại câu lệnh in. Khi ứng dụng của bạn đã trải qua nhiều giai đoạn phát triển khác nhau và cuối cùng là đi vào sản xuất, việc phân loại và gỡ lỗi các câu lệnh in đó sẽ trở nên rất khó khăn Bạn có thể lập luận rằng bạn có thể sửa đổi báo cáo in của mình để phù hợp với các giai đoạn khác nhau và cung cấp thêm thông tin. Nhưng điều đó sẽ thêm rác vào cơ sở mã của bạn để bù đắp cho thứ gì đó in không phù hợp và thậm chí không được xây dựng cho Ưu điểm của việc sử dụng mô-đun Ghi nhật ký PythonMô-đun ghi nhật ký trong Python cung cấp giải pháp cho tất cả các vấn đề trên
Vì vậy, hãy đi sâu vào thế giới đăng nhập bằng Python Các cấp độ ghi nhật kýBây giờ mô-đun ghi nhật ký đã là một phần của thư viện chuẩn python. Vì vậy, chỉ cần nhập nhật ký và chúng tôi đã sẵn sàng để bắt đầu. Theo mặc định, bạn sẽ thấy rằng có 5 cấp độ ghi nhật ký tiêu chuẩn cho biết mức độ nghiêm trọng của các sự kiện. họ đang
Một ví dụ đơn giản về Ghi nhật kýHãy xem cách triển khai cơ bản của Ghi nhật ký 0Khi chúng tôi chạy đoạn mã trên, chúng tôi nhận được một cái gì đó như thế này 1Lưu ý cách nhật ký gỡ lỗi và thông tin không được ghi lại. Điều này là do cảnh báo là mức ghi nhật ký mặc định. Mọi mức độ nghiêm trọng dưới cảnh báo sẽ bị bỏ qua, trừ khi chúng tôi ghi đè lên mức mặc định. Để thay đổi mức ghi nhật ký mặc định, bạn phải sử dụng phương pháp 1 trong ghi nhật ký. Bạn phải chuyển một đối số có tên là 2 và đặt nó ở cấp độ ghi nhật ký mà chúng tôi muốn xem nhật ký của mình 4Khi bạn chạy tập lệnh trên, bạn sẽ thấy rằng tất cả các thông báo có mức độ nghiêm trọng của lỗi trở lên đang được ghi lại. Nó đơn giản mà Định dạng nhật ký của chúng tôi để có thêm thông tinBây giờ lượng thông tin ở đây là không đủ. Không phải tôi đã khoe khoang về các thuộc tính kỳ diệu của mô-đun ghi nhật ký trước đó sao? . Nếu bạn kiểm tra trang thuộc tính bản ghi nhật ký, bạn có thể tìm thấy một bảng gồm tất cả các tên thuộc tính cùng với các định dạng và mô tả có thể sử dụng của chúng mà bạn có thể đưa vào nhật ký của mình. Hãy thử chọn một vài trong số những cái quan trọng Giả sử chúng tôi muốn có nhật ký của mình với các chi tiết sau
Hãy viết một đoạn trích để bao gồm những thông tin này. Tôi đang tạo một biến có tên là 3 và gán cho nó một chuỗi đại diện cho hình thức nhật ký của tôi 6Đoạn mã trên sẽ trả lại cho chúng tôi tất cả các thuộc tính logrecord mà chúng tôi muốn nhận. Các bản ghi sẽ trông giống như thế này 7Trong suốt thời gian qua, bạn có thắc mắc 4 có nghĩa là gì trong nhật ký không? Đăng nhập vào một tập tinThông thường các bản ghi có ít mục đích được in ra bàn điều khiển. Lý tưởng nhất là bạn muốn lưu trữ chúng trong một tệp. Để làm điều đó, bạn phải sử dụng đối số 5 và đặt nó thành tên tệp hoặc đường dẫn đầy đủ của tên tệp bạn chọn. Mỗi khi bạn chạy ứng dụng của mình, nhật ký mới sẽ được thêm vào tệp 0Nếu bạn chỉ muốn có nhật ký mới nhất trong tệp nhật ký của mình, bạn cũng có thể sử dụng đối số 6. Bằng cách đó, các bản ghi mới sẽ ghi đè lên các bản ghi hiện có mỗi lần 0Đăng nhập từ nhiều mô-đunGiả sử bạn đang làm việc trên một dự án 7 và nhập một mô-đun khác có tên là 8. Cả hai tập tin trông giống như thế này 1 2Nếu bạn chạy 7, bạn sẽ nhận thấy các thông báo được ghi theo cách này 3Tại sao theo thứ tự này? . Phương thức 01 bên trong mô-đun trợ giúp được gọi đầu tiên. Thông báo gỡ lỗi được ghi vào bảng điều khiển và sau đó tập lệnh bên trong 7 được thực thiHãy thử một thí nghiệm khác. Bây giờ trong 7, chúng tôi sẽ thêm đối số tên tệp để ghi nhật ký tin nhắn của chúng tôi vào một tệp thay vì bảng điều khiển. 8 vẫn giữ nguyên 4Bây giờ, chúng tôi mong muốn thông báo từ 8 được ghi vào bảng điều khiển và thông báo từ 7 được ghi vào tệp. Nhưng khi bạn chạy tập lệnh, cả hai thông báo đều được ghi vào bảng điều khiển 3Điều này là do, khi bạn nhập mô-đun trợ giúp, phương thức 01 được đăng ký. Sau khi phương thức 01 được đăng ký, nó không thể thay đổi được. Bạn có thể xác nhận điều này bằng cách chạy hai phương thức 01 trong tập lệnh python 6Vì vậy, đây là một vấn đề. Chúng tôi không thể đăng nhập tin nhắn từ hai mô-đun khác nhau đến hai nơi khác nhau. Làm thế nào chúng ta có thể giải quyết nó? Có lẽ bây giờ là thời điểm tốt để nói về 4 hay còn gọi là Root loggerTrình ghi gốcMô-đun ghi nhật ký Python có một hệ thống phân cấp. Root Logger ở trên cùng của hệ thống phân cấp Khi bạn đang sử dụng phương pháp 01, về cơ bản, bạn đang khởi tạo bộ ghi Gốc. Khi bạn sử dụng thuộc tính ghi nhật ký 12 và nó trả về 4, điều đó có nghĩa là bạn đang sử dụng trình ghi nhật ký gốcKhi bộ ghi gốc được khởi tạo, bạn không thể thêm bất kỳ phương thức ghi nhật ký nào khác vào mô-đun của mình. Như chúng ta có thể thấy từ ví dụ trên, đăng nhập trực tiếp vào Root logger không thực sự là một ý tưởng hay. Thay vào đó, chúng ta nên tạo và định cấu hình các thực thể ghi nhật ký phục vụ các yêu cầu ghi nhật ký cho từng mô-đun cụ thể. Chúng ta có thể làm điều đó bằng cách cấu hình Main Logger Định cấu hình Trình ghi nhật ký chínhHãy hiểu cách định cấu hình một bộ ghi riêng biệt nói chung. Chúng tôi có thể định cấu hình trình ghi nhật ký mới bằng cách sử dụng phương pháp 14. Phương thức này mong đợi một tên cho trình ghi nhật ký, nếu không, nó sẽ lấy tên của trình ghi nhật ký gốc. Cách tốt nhất là đặt cho nó tên mô-đun bằng cách sử dụng biến 15. Bằng cách này, bộ ghi được định cấu hình sẽ luôn theo dõi tên của mô-đun tạo nhật ký và do đó dễ phân tích hơn sau này 7Khi bạn chạy đoạn mã trên, bạn nhận được kết quả như thế này 8Theo mặc định, logger có mức độ nghiêm trọng là 0. Vì vậy, họ luôn sử dụng cấp độ nhật ký của bộ ghi chính đầu tiên trừ khi cấp đó được đặt riêng cho bộ ghi Bộ ghi chính cho bộ ghi cấu hình ở trên là Bộ ghi gốc. Vì vậy, thông báo mức gỡ lỗi không được ghi lại Nhưng tại sao không có thông tin nào khác được hiển thị? . Làm thế nào để làm điều đó? Với phương thức 16, tên cấp độ, tên bộ ghi và thông báo được hiển thị theo mặc định cho người dùng. Tuy nhiên, với việc định cấu hình bộ ghi của riêng bạn, bạn phải đặt các tham số này theo cách thủ công. Bạn làm điều đó thông qua các đối tượng Handler và FormatterCác đối tượng từ các lớp Trình xử lý chịu trách nhiệm gửi thông báo ghi nhật ký của bạn đến đúng đích. Bạn có thể tìm thấy danh sách các loại trình xử lý khác nhau có sẵn tại đây. Các đối tượng từ các lớp Trình định dạng cấu hình cấu trúc và định dạng của thông điệp tường trình của bạn Một số tình huống ghi nhật kýGhi thông báo vào tệp bằng phương pháp FileHandler 9Bây giờ bạn sẽ thấy đăng nhập ________ 117 như thế này 0Ghi nhật ký tin nhắn vào bảng điều khiển bằng phương thức StreamHandler 1Bây giờ bạn sẽ thấy thông điệp tường trình của mình được in ra bàn điều khiển Ưu điểm của việc cấu hình Main LoggerCó một lợi thế rất lớn khi định cấu hình Trình ghi nhật ký chính thay vì sử dụng Trình ghi nhật ký gốc. Hãy để chúng tôi thấy rằng thông qua một ví dụ. Hãy quay lại ví dụ cũ của chúng ta về 7 và 8. Tuy nhiên, lần này, thay vì sử dụng phương pháp 16, chúng tôi sẽ định cấu hình bộ ghi nhật ký chính cho cả hai tệp. Lần này cũng vậy, chúng tôi muốn ghi thông báo từ 7 vào một tệp và thông báo từ 8 vào bảng điều khiển 2____23Khi bạn thực thi 7, chỉ có thông báo nhật ký từ mô-đun trợ giúp được ghi vào bảng điều khiển. Nhật ký từ 7 được ghi vào tệp bạn muốn. tiếng hoan hôCũng lưu ý một điều nữa. Nhìn vào tin nhắn được ghi lại từ 8 4Thuộc tính 12 trả về tên tệp thực mà từ đó thông báo được ghi lại. Đó không phải là điều tuyệt vời sao? Tôi hy vọng bạn thích blog này về mô-đun Ghi nhật ký Python. Nó cần một đường cong học tập để làm quen với các tiêu chuẩn và chức năng. Nhưng một khi bạn hiểu khái niệm, đây sẽ là một trong những thư viện hữu ích nhất mà bạn biết Làm cách nào để ghi nhật ký đầu ra của bàn điều khiển bằng Python?Để in các chuỗi lên bảng điều khiển hoặc lặp lại một số dữ liệu tới đầu ra của bảng điều khiển, hãy sử dụng hàm print() có sẵn của Python . hàm print() có thể lấy các loại giá trị khác nhau làm (các) đối số, như chuỗi, số nguyên, dấu phẩy, v.v. , hoặc đối tượng của một loại lớp.
Trình ghi nhật ký Python xuất ra ở đâu?Trình xử lý nhật ký
. Trong đoạn mã trên, có hai trình xử lý được tạo. Một FileHandler được tạo bằng cách ghi nhật ký. basicConfig() cho bộ ghi gốc và StreamHandler được tạo cho bộ ghi gốc. With StreamHandler , the logger will output to the terminal, while with FileHandler , the logger will output to a particular file. In the code above, there are two handlers created: A FileHandler created by logging. basicConfig() for the root logger and a StreamHandler created for the parent logger.
Làm cách nào để lưu đầu ra dấu nhắc lệnh vào tệp văn bản trong Python?Để lưu đầu ra lệnh vào tệp văn bản bằng Dấu nhắc Lệnh, hãy làm theo các bước sau. . Mở bắt đầu Tìm kiếm Dấu nhắc Lệnh Bấm chuột phải vào kết quả trên cùng và chọn tùy chọn Chạy với tư cách quản trị viên Nhập lệnh sau để lưu đầu ra vào tệp văn bản và nhấn Enter. LỆNH CỦA BẠN > C. \PATH\TO\FOLDER\OUTPUT. txt |