Kích thước tệp giới hạn ghi nhật ký Python

Bằng cách đọc bài viết này, bạn sẽ học cách triển khai hệ thống ghi nhật ký theo thời gian của riêng mình để xuất tệp nhật ký hàng ngày cho máy chủ Flask hoặc Django của bạn

Có một hệ thống ghi nhật ký thực sự có lợi cho việc gỡ lỗi. Bạn chắc chắn muốn tạo các tệp nhật ký hàng ngày để theo dõi các lỗi, cũng như để thu thập dữ liệu, chẳng hạn như việc sử dụng và các API thường được gọi

Chúng tôi sẽ sử dụng mô-đun tích hợp có tên là ghi nhật ký, đây là một mô-đun mạnh mẽ. Một trong những ưu điểm chính của mô-đun này là nó là mô-đun thư viện chuẩn, có nghĩa là tất cả các mô-đun Python đều có thể tham gia ghi nhật ký

Có ba phần trong hướng dẫn này

  1. sử dụng cơ bản
  2. thành phần nâng cao
  3. Phần kết luận

Bắt đầu nào

1. Sử dụng cơ bản

Nhập khẩu

Bạn cần nhập mô-đun trước khi có thể sử dụng nó. Thêm câu lệnh nhập sau

import logging

Tiếp theo, bạn có thể ghi nhật ký các tin nhắn bằng cách sử dụng các chức năng có sẵn dựa trên mức độ nghiêm trọng

cấp độ ghi nhật ký

Có tất cả năm cấp độ được cung cấp

  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    2 — Thông tin chi tiết, thường chỉ được quan tâm khi chẩn đoán sự cố
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    3 — Xác nhận rằng mọi thứ đang hoạt động như mong đợi
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    4 — Dấu hiệu cho thấy điều gì đó bất ngờ đã xảy ra hoặc dấu hiệu của một số vấn đề trong tương lai gần [e. g. "Dung lượng ổ đĩa thấp"]. Phần mềm vẫn hoạt động bình thường
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    5 — Do sự cố nghiêm trọng hơn, phần mềm không thể thực hiện một số chức năng
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    6 — Một lỗi nghiêm trọng, chỉ ra rằng bản thân chương trình có thể không tiếp tục chạy được

Bạn có thể gọi chúng như sau

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']

Hãy kiểm tra nó bằng cách thiết lập một máy chủ Flask đơn giản và chạy các thông điệp tường trình

Lưu mã ở trên vào tệp có tên

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
7. Mở một thiết bị đầu cuối và trỏ nó vào thư mục và chạy nó thông qua lệnh sau

________số 8

Mở trình duyệt và nhập

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
8, bạn sẽ có thể thấy phản hồi của
logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
9 và đầu ra sau trong bảng điều khiển

Hình ảnh của tác giả

Bạn sẽ nhận thấy rằng

python log_test.py
0 không được ghi lại. Điều này chủ yếu là do cấp độ ghi nhật ký đã được mặc định là cảnh báo trở lên. Thông báo gỡ lỗi và thông tin sẽ không được ghi lại

Chúng ta có thể dễ dàng thay đổi mức ghi nhật ký thông qua chức năng

python log_test.py
1 trong quá trình khởi tạo. Hãy kiểm tra nó bằng cách thêm đoạn mã sau ngay trên trang trí
python log_test.py
2 và bên dưới
python log_test.py
3

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
5

Bạn sẽ có thể thấy đầu ra sau

Hình ảnh của tác giả

Khởi tạo thông qua basicConfig

Hàm

python log_test.py
1 cũng chấp nhận tham số tên tệp cho biết rằng nó nên sử dụng
python log_test.py
5 để ghi tệp vào tệp thay vì bảng điều khiển

Tạo một thư mục mới có tên là

python log_test.py
6 và sửa đổi mã
python log_test.py
1 thành như sau

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
0

Một tệp có tên

python log_test.py
8 sẽ được tạo khi bạn truy cập
logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
8 trong trình duyệt web

Hình ảnh của tác giả

Hệ thống ghi nhật ký sẽ nối các thông báo nhật ký vào tệp cho lệnh gọi tiếp theo tới URL

dữ liệu biến

Bạn có thể sử dụng chuỗi định dạng để ghi dữ liệu biến. Ví dụ như sau

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
3

Định dạng

Bạn có thể chỉ định định dạng của đầu ra dựa trên sở thích của mình. Ví dụ sau sẽ ghi lại thời gian, mức độ nghiêm trọng của thông báo và cuối cùng là thông báo đầu ra

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
4

Bạn sẽ nhận được đầu ra sau

Hình ảnh của tác giả

Trong phần tiếp theo, chúng ta sẽ khám phá hai thành phần chính khác của mô-đun ghi nhật ký

2. Thành phần nâng cao

Các chức năng trong phần trước là một phần của thành phần trình ghi nhật ký có sẵn để hiển thị giao diện mà mã ứng dụng trực tiếp sử dụng. Ngoài thành phần logger, còn có hai thành phần chính khác

  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    50— Gửi bản ghi nhật ký [do người ghi nhật ký tạo] đến đích thích hợp
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    51 — Chỉ định bố cục của các bản ghi nhật ký trong đầu ra cuối cùng

Hai thành phần này là một phần của cấu hình cho thành phần

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
52

Bạn có thể sử dụng cả hai thành phần để triển khai hệ thống ghi nhật ký nâng cao, chẳng hạn như luân phiên giữa các tệp khác nhau tùy thuộc vào dung lượng kích thước tệp hoặc ngày trong ngày

Hãy kiểm tra nó bằng cách sao chép chức năng tương tự, nhưng lần này, với cả hai thành phần

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
53 và
logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
54

trình định dạng

Mặt khác, trình định dạng lấy một chuỗi kiểu đơn giản xác định định dạng của thư

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
0

xử lý

Những cái mà chúng tôi đã thử nghiệm cho đến nay là

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
55 và
python log_test.py
5. Ngoài trình xử lý mặc định, mô-đun còn đi kèm với các trình xử lý sau

  1. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    57 gửi tin nhắn đến luồng [đối tượng giống như tệp]
  2. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    58 gửi tin nhắn đến tệp đĩa
  3. logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    59 là lớp cơ sở dành cho trình xử lý xoay tệp nhật ký tại một điểm nhất định. Nó không có nghĩa là được khởi tạo trực tiếp. Thay vào đó, hãy sử dụng
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    00 hoặc
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    01
  4. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    02 gửi tin nhắn đến tệp đĩa, với sự hỗ trợ cho kích thước tệp nhật ký tối đa và xoay vòng tệp nhật ký
  5. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    03 gửi tin nhắn đến tệp đĩa, xoay tệp nhật ký theo các khoảng thời gian nhất định
  6. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    04 gửi tin nhắn đến ổ cắm TCP/IP. kể từ 3. 4, Ổ cắm tên miền Unix cũng được hỗ trợ
  7. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    05 gửi tin nhắn đến ổ cắm UDP. kể từ 3. 4, Ổ cắm tên miền Unix cũng được hỗ trợ
  8. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    06 gửi tin nhắn đến một địa chỉ email được chỉ định
  9. Các phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    07 gửi tin nhắn đến một trình nền nhật ký hệ thống Unix, có thể trên một máy từ xa
  10. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    08 gửi thông báo tới nhật ký sự kiện Windows NT/2000/XP
  11. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    09 gửi tin nhắn đến bộ đệm trong bộ nhớ, bộ đệm này sẽ bị xóa bất cứ khi nào tiêu chí cụ thể được đáp ứng
  12. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    30 gửi tin nhắn đến máy chủ HTTP sử dụng ngữ nghĩa
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    31 hoặc
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    32
  13. Các trường hợp
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    33 xem tệp mà chúng đang đăng nhập. Nếu tệp thay đổi, tệp sẽ được đóng và mở lại bằng tên tệp. Trình xử lý này chỉ hữu ích trên các hệ thống giống Unix;
  14. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    34 gửi tin nhắn đến hàng đợi, chẳng hạn như những tin nhắn được triển khai trong hàng đợi hoặc mô-đun đa xử lý
  15. Phiên bản
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    35 không làm gì với thông báo lỗi. Chúng được sử dụng bởi các nhà phát triển thư viện, những người muốn sử dụng ghi nhật ký, nhưng muốn tránh thông báo
    logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    36 có thể được hiển thị nếu người dùng thư viện chưa định cấu hình ghi nhật ký

Khi bạn đã khởi tạo nó, bạn có thể sử dụng bộ định dạng cho trình xử lý

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
3

Tiều phu

Trình ghi nhật ký cho phép chúng tôi đặt mức ghi nhật ký cũng như thêm hoặc xóa trình xử lý. Ví dụ sau đặt mức ghi nhật ký thành

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
3 và trình xử lý thành
python log_test.py
5 mà chúng tôi đã xác định trước đó

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
6

Đối với cuộc gọi nhật ký tiếp theo, bạn phải sử dụng

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
39 thay vì
logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
40

Chúng ta hãy xem mã hoàn chỉnh sau đây để tham khảo

Mặc dù mã hoàn chỉnh cho cùng một triển khai dài dòng hơn nhiều so với phần trước thông qua lệnh gọi

python log_test.py
1, nhưng lợi ích của việc có cấu trúc như vậy cho phép chúng tôi dễ dàng triển khai hệ thống ghi nhật ký mong muốn của mình

Hãy cùng xem ví dụ sau sử dụng

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
01 để ghi nhật ký các tệp hàng ngày

TimedRotatingFileHandler

Chúng tôi sẽ nhập mô-đun ở trên cùng để nhắc nhở rằng ứng dụng Flask này sử dụng

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
01

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
0

Trong quá trình khởi tạo, bạn có thể xác định các tham số

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
44. Chuỗi đầu vào không phân biệt chữ hoa chữ thường

  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    45 — Giây
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    46 — Phút
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    47 — Giờ
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    48 — Ngày
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    49 — Ngày trong tuần [0=Thứ Hai]
  • logging.debug['Debug']
    logging.info['Info']
    logging.warning['Warning']
    logging.error['Error']
    logging.critical['Critical']
    00 — Lật xe lúc nửa đêm

Ví dụ sau sẽ ghi nhật ký vào một tệp mới khi năm giây trôi qua. Tệp sẽ chỉ được tạo nếu có sự kiện nhật ký

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
1

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
01 sẽ được sử dụng làm tài liệu tham khảo khi tạo tệp mới. Nó sẽ luôn lưu trữ dữ liệu nhật ký trong
python log_test.py
8. Khi điều kiện được đáp ứng, tệp hiện tại sẽ được đổi tên dựa trên hậu tố

Bạn sẽ nhận được kết quả sau khi gửi thư rác

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
8

Hình ảnh của tác giả

Mã sau đây là mã hoàn chỉnh để tạo tệp nhật ký hàng ngày. Chỉ cần đặt các tham số thành

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
00 với khoảng thời gian là
logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
05

Nếu bạn đang ghi unicode hoặc một dạng mã hóa khác, vui lòng đặt nó trong quá trình khởi tạo. Tham số

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
06 chấp nhận đầu vào chuỗi chẳng hạn như
logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
07

3. Phần kết luận

Hãy tóm tắt những gì chúng ta đã học ngày hôm nay

Chúng tôi bắt đầu bằng cách khám phá chức năng cơ bản của mô-đun ghi nhật ký. Chúng tôi đã học cách xuất dữ liệu nhật ký thành tệp thông qua hàm

python log_test.py
1

Sau đó, chúng tôi chuyển sang hai trong số các thành phần chính, đó là

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
54 và
logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
53. Chúng tôi đã triển khai chức năng tương tự với chúng và hiển thị chúng với các trình xử lý khác có sẵn trong mô-đun

Bên cạnh đó, chúng tôi cũng đã thử nghiệm

logging.debug['Debug']
logging.info['Info']
logging.warning['Warning']
logging.error['Error']
logging.critical['Critical']
01 cho hệ thống nhật ký hàng ngày. Vui lòng tự mình kiểm tra các trình xử lý khác

Kích thước tối đa của tệp nhật ký là bao nhiêu?

Kích thước tối đa cho tệp nhật ký là hai terabyte . Kích hoạt tính năng tự động phát triển. Tự động phát triển cho phép Máy chủ SQL mở rộng kích thước của tệp cơ sở dữ liệu khi chúng hết dung lượng.

Tệp nhật ký nên lớn đến mức nào?

ĐIỂM BẮT ĐẦU tốt cho tệp nhật ký của bạn là gấp đôi kích thước của chỉ mục lớn nhất trong cơ sở dữ liệu của bạn hoặc 25% kích thước cơ sở dữ liệu . cái nào lớn hơn.

Python cấp ghi nhật ký cao nhất là gì?

Bắt đầu đăng nhập bằng Python . Mô-đun ghi nhật ký tích hợp của Python cung cấp chức năng dễ sử dụng và năm cấp độ ghi nhật ký có mức độ nghiêm trọng tăng dần. gỡ lỗi [10], mức ghi nhật ký thấp nhất đến quan trọng [50] , mức cao nhất.

Năm cấp độ đăng nhập trong Python là gì?

Python có sáu cấp độ nhật ký với mỗi cấp độ được gán một số nguyên cụ thể cho biết mức độ nghiêm trọng của nhật ký. .
KHÔNG ĐẶT = 0
GỠ LỖI=10
THÔNG TIN=20
CẢNH BÁO=30
LỖI=40
TIÊU CHÍ = 50

Chủ Đề