Tập tin ghi nhật ký Python
Có nhật ký tốt là rất quan trọng để theo dõi các ứng dụng, hiểu hành vi sản xuất và bắt lỗi. Đăng nhập vào python được thực hiện tốt và được ghi chép đầy đủ. Tuy nhiên, đôi khi bạn chỉ cần hoàn thành công việc nhanh chóng và bạn không có thời gian để đọc tài liệu chính thức xuất sắc nhưng khá dài Show Trong bài viết này, chúng tôi sẽ cố gắng tìm ra các công thức nhanh chóng để ghi nhật ký hiệu quả. Trước khi chúng tôi bắt đầu, chỉ cần một số thuật ngữ cơ bản để ghi nhật ký python
Không có gì khó chịu, chúng ta hãy đi thẳng vào nó và nhận một số công thức nhanh chóng để đăng nhập ứng dụng python của bạn ngay lập tức Cách nhanh nhất để ghi nhật ký cho các ứng dụng đơn giản là sử dụng ghi nhật ký. basicConfig, nó sẽ tạo StreamHandler (và FileHandler nếu chúng ta chỉ định tên tệp) và thêm nó vào bộ ghi ROOT. import logging Sau đó sử dụng nó như sau import logging Điều này sẽ dẫn đến đầu ra sau trên my_log_file của chúng tôi. tệp nhật ký INFO:root:Just entered the function Trong trường hợp bạn cũng muốn hiển thị thời gian, chỉ cần thêm định dạng như sau logging.basicConfig(filename='my_log_file.log', format='%(asctime)s - %(message)s', level=logging.INFO) Cái nào sẽ thay đổi thông báo đầu ra trong tệp nhật ký của bạn thành 2020-07-20 17:05:29,686 - Just entered the function Khi nào thì sử dụng nó. Các ứng dụng đơn giản mà bạn chỉ cần thực hiện một số thao tác ghi nhật ký mà không cần quá nhiều thao tác. Sử dụng tối thiểu các thư viện bên ngoài và bạn không cần kiểm soát quá nhiều về cách thực hiện ghi nhật ký Khi nào không sử dụng nó. Khi bạn cần kiểm soát chi tiết về cách thực hiện ghi nhật ký hoặc bất kỳ ứng dụng đa quy trình nào kịch bản 2. Tôi có một ứng dụng, đơn/đa luồng đang sử dụng một số thư viện và tôi muốn thực hiện một số thao tác ghi nhật kýNếu ứng dụng của bạn bắt đầu phức tạp hơn một chút và bạn cần kiểm soát nhiều hơn đối với việc ghi nhật ký, chúng ta nên tránh sử dụng trình ghi ROOT, thay vào đó, hãy tạo trình ghi nhật ký của riêng chúng tôi như sau logger = logging.getLogger('non_simple_example') Hãy thêm trình xử lý để gửi nhật ký tới bảng điều khiển và/hoặc tới tệp, trình định dạng để chỉ định định dạng ghi nhật ký yêu thích của chúng ta # create console handler and set level to info Sau đó, chỉ cần sử dụng trình ghi nhật ký trong ứng dụng của bạn, ví dụ logger.info("Info message") Chúng tôi sẽ có những thứ được ghi vào bảng điều khiển/tệp theo cấp độ ghi nhật ký và cấu hình trình xử lý. Trong ví dụ trước, trình xử lý tệp có mức GỠ LỖI, trong khi trình xử lý bảng điều khiển có mức INFO. Điều này có nghĩa là mọi nhật ký có mức GỠ LỖI sẽ không được hiển thị trong bảng điều khiển nhưng nó sẽ được hiển thị trong tệp nhật ký Đây là đầu ra của giao diện điều khiển Và đầu ra sau trong tệp nhật ký của chúng tôi 2020-07-20 17:13:34,439 - non_simple_example - INFO - Info message Tìm mã đầy đủ tại đây. Khi nào thì sử dụng nó. Khi bạn cần thêm một số quyền kiểm soát đối với việc ghi nhật ký và bạn muốn tránh sử dụng/làm ô nhiễm trình ghi nhật ký gốc Khi nào không sử dụng nó. Nếu bạn có nhiều quy trình kịch bản 3. Nhật ký của tôi ngày càng lớn, tôi có thể làm gì?Rất dễ dàng, hãy chuyển từ một FileHandler đơn giản sang một RotatingFileHandler tinh vi hơn sẽ chuyển các tệp nhật ký khi chúng đạt đến một kích thước cụ thể import logging 0Bạn có thể sử dụng TimedRotatingFileHandler nếu bạn muốn chuyển nhật ký vào mỗi cuối ngày/tuần/tháng import logging 1Tình huống 4. Tôi có ứng dụng đa quy trình và tôi cần đăng nhậpGhi nhật ký từ các quy trình khác nhau không phải là chuyện nhỏ và nó cần thêm một số nỗ lực. Tôi khuyên bạn không nên sử dụng giải pháp nhanh và bẩn mà hãy thực sự đọc qua tài liệu chính thức giải thích chi tiết chính xác điều gì đang xảy ra và một số chiến lược để giải quyết thách thức là gì Một cách thú vị để giải quyết vấn đề này là sử dụng WatchedFileHandler và sử dụng một tiện ích bên ngoài như logrotate để thực sự xoay nhật ký theo cấu hình Trình xử lý tệp xoay Python là gì?RotatingFileHandler hỗ trợ xoay tệp nhật ký, cung cấp cho trình xử lý khả năng xoay tệp nhật ký dựa trên kích thước tối đa của tệp . 2 tham số nên được xác định ở đây. maxBytes và backupCount. maxBytes cho trình xử lý biết khi nào xoay nhật ký.
Làm cách nào để tạo tệp nhật ký mới cho mỗi lần ứng dụng chạy bằng Python?Làm cách nào để tạo tệp nhật ký mới mỗi khi ứng dụng chạy? . chạy với logger. gỡ lỗi ("test1") - ví dụ. nhật ký sẽ chứa test1 gấp 10 lần như bình thường chạy với logger. debug("test2") - nó viết lại ví dụ. log để chứa test2 10 lần vân vân FileHandler trong ghi nhật ký là gì?Trình xử lý tệp. Lớp FileHandler, nằm trong gói ghi nhật ký lõi, gửi kết quả ghi nhật ký tới tệp đĩa . Nó kế thừa chức năng đầu ra từ StreamHandler. nhật ký lớp học. FileHandler(tên tệp, chế độ='a', mã hóa=Không, độ trễ=Sai, lỗi=Không) |