Hướng dẫn ghi nhật ký Python. Hiểu những điều cơ bản - CrowdStrike
Mặc dù việc gửi thông báo nhật ký tới bảng điều khiển rất tốt cho việc gỡ lỗi cục bộ, nhưng trong thực tế sử dụng, bạn sẽ thường xuyên cần gửi nhật ký đến các đích khác Show
Chúng tôi sẽ đề cập đến các chủ đề phức tạp hơn như ghi nhật ký tập trung và # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')2 cho Django sau trong Hướng dẫn ghi nhật ký Python của chúng tôi, nhưng bây giờ, hãy tập trung vào ba trường hợp sử dụng điển hình
Nhật ký Python được gửi đến một tệpBạn có thể sử dụng mô-đun ghi nhật ký mặc định và chỉ định tên tệp trong mã của mình để làm cho chương trình Python của bạn tạo tệp nhật ký, chẳng hạn, để ghi tập lệnh mức CẢNH BÁO ban đầu của chúng tôi vào tệp có tên HumioDemo. log, dòng sau được thêm vào ________Đầu tiênTập lệnh được cập nhật phải giống như thế này # Import the default logging module import logging # Set basicConfig() to create a log file logging.basicConfig(filename='HumioDemo.log') # Emit a warning message logging.warning('You are learning Python logging!') Khi bạn chạy tập lệnh đó, sẽ không có gì in ra bàn điều khiển; . tệp nhật ký sẽ chứa thông báo tường trình và được đặt trong thư mục làm việc hiện tại Gửi nhật ký Python tới nhật ký hệ thốngMô-đun ghi nhật ký Python mặc định bao gồm một để gửi nhật ký đến máy chủ nhật ký hệ thống cục bộ hoặc từ xa, đây là cách phổ biến để tập trung nhật ký cục bộ và từ xa từ các ứng dụng trên toàn hệ thống. Một mô-đun nhật ký hệ thống tiêu chuẩn cũng có sẵn giúp việc ghi vào nhật ký hệ thống trở nên đơn giản đối với các trường hợp sử dụng Python phổ biến Tập lệnh này sử dụng mô-đun nhật ký hệ thống chung # Import the standard syslog module import syslog # Emit an INFO-level message syslog.syslog(syslog.LOG_INFO,'Logging an INFO message with the syslog module!') # Emit a WARNING-level message syslog.syslog(syslog.LOG_WARNING,'Logging a WARNING message with the syslog module!') Thông báo sẽ xuất hiện trong tệp nhật ký hệ thống cục bộ của hệ thống, tùy thuộc vào hệ thống của bạn, tệp này có thể được đặt tên là # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')3 hoặc # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')4. Thông điệp tường trình sẽ trông giống như sau_16 Gửi nhật ký Python tới systemd-journaldƯu điểm của việc sử dụng systemd-journald để ghi nhật ký bao gồm
Tất cả những gì bạn cần làm là gửi đầu ra nhật ký của mình tới thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn trên hầu hết các hệ thống Linux hiện đại sử dụng systemd và bất kỳ ứng dụng Python nào của bạn in ra thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn sẽ ghi vào systemd-journald Thư viện python-systemd và các trình bao bọc như trình bao bọc Python systemd hợp lý hóa quá trình gửi nhật ký Python tới systemd-journald ngoài các mô-đun có trong thư viện Python tiêu chuẩn Ví dụ: sử dụng trình quản lý gói của hệ thống để cài đặt python-systemd trước khi thêm dòng sau vào mã của bạn để sử dụng nó from systemd import journal Đây là một tập lệnh Python đơn giản xuất ra một thông báo ghi nhật ký ở mức CẢNH BÁO _19Sau khi thực thi đoạn script được đề cập ở trên, chúng tôi chạy # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')6 và quan sát kết quả tương tự như logging.basicConfig(filename='HumioDemo.log')1 Nguyên tắc tạo nhật ký PythonGiờ đây, bạn có thể triển khai ghi nhật ký cơ bản nhất cho các ứng dụng Python của mình, nhưng vẫn còn nhiều điều cần tìm hiểu về mô-đun ghi nhật ký tích hợp. PEP 282, chính thức, và là nguồn tuyệt vời để tìm hiểu thêm Cân nhắc các phương pháp hay nhất sau đây khi bạn thăng tiến Bao gồm dấu thời gian với tin nhắn của bạnBạn phải luôn bao gồm dấu thời gian với mọi thư bạn gửi vì khi nào là thành phần quan trọng của một sự kiện. Bạn có thể tùy chỉnh thêm bằng cách sử dụng mô-đun ghi nhật ký mặc định bằng cách thêm dấu thời gian vào trình định dạng của mình, như chúng tôi đã làm với %(asctime)s trong ví dụ trước của chúng tôi sở hữu một thiết bị để quay các bản ghiCó chiến lược xoay vòng nhật ký nếu bạn lưu trữ nhật ký trên đĩa để ngăn các sự cố về dung lượng ổ đĩa. Với mô-đun ghi nhật ký Python tích hợp, hãy nghĩ đến việc sử dụng Không khởi tạo trực tiếp các mô-đun ghi nhật kýSử dụng ghi nhật ký để tạo các mô-đun ghi nhật ký thay vì khởi tạo trực tiếp chúng. getLogger(name)Nếu bạn đặt tên cho logger theo các mô-đun thích hợp, hệ thống phân cấp đặt tên mô-đun mặc định và hệ thống phân cấp gói Python giống hệt nhau Tập trung nhật ký của bạnTập trung nhật ký của bạn để phân tích cú pháp và phân tích mang lại cho bạn khả năng quan sát trên quy mô lớn; Cho đến nay, chúng tôi đã gửi các thông điệp nhật ký của mình tới bảng điều khiển. Điều đó rất tốt cho việc gỡ lỗi cục bộ, nhưng trong thực tế, bạn sẽ thường cần gửi nhật ký đến các đích khác Sau này trong Hướng dẫn ghi nhật ký Python của chúng tôi, chúng tôi sẽ đề cập đến các chủ đề nâng cao hơn như ghi nhật ký tập trung và # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')2 cho Django. Hiện tại, chúng tôi sẽ tập trung vào ba trường hợp sử dụng phổ biến
Gửi nhật ký Python tới một tệpNếu muốn ứng dụng Python của mình tạo tệp nhật ký, bạn có thể sử dụng mô-đun ghi nhật ký mặc định và chỉ định tên tệp trong mã của mình. Ví dụ: để làm cho tập lệnh mức CẢNH BÁO ban đầu của chúng tôi ghi vào một tệp có tên HumioDemo. log, chúng tôi thêm dòng sau ________số 8Kịch bản mới sẽ trông như thế này # Import the default logging module import logging # Set basicConfig() to create a log file logging.basicConfig(filename='HumioDemo.log') # Emit a warning message logging.warning('You are learning Python logging!') Sẽ không có gì in ra bàn điều khiển khi bạn chạy tập lệnh đó. Thay vào đó, nó sẽ tạo một HumioDemo. tệp nhật ký trong thư mục làm việc hiện tại và tệp này sẽ bao gồm thông báo tường trình Gửi nhật ký Python tới nhật ký hệ thốngSyslog là một cơ chế phổ biến để tập trung các bản ghi cục bộ và từ xa từ các ứng dụng trên toàn hệ thống. Mô-đun ghi nhật ký Python mặc định bao gồm một để gửi nhật ký đến máy chủ nhật ký hệ thống cục bộ hoặc từ xa. Ngoài ra còn có một mô-đun nhật ký hệ thống tiêu chuẩn giúp dễ dàng ghi vào nhật ký hệ thống cho các trường hợp sử dụng Python cơ bản Đây là tập lệnh sử dụng mô-đun nhật ký hệ thống tiêu chuẩn # Import the standard syslog module import syslog # Emit an INFO-level message syslog.syslog(syslog.LOG_INFO,'Logging an INFO message with the syslog module!') # Emit a WARNING-level message syslog.syslog(syslog.LOG_WARNING,'Logging a WARNING message with the syslog module!') Sau khi chạy tập lệnh đó, bạn sẽ thấy các thông báo trong tệp nhật ký hệ thống cục bộ của hệ thống. Tùy thuộc vào hệ thống của bạn, tệp đó có thể là # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')3 hoặc # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')4. Thông điệp tường trình sẽ trông giống như sau # Import the default logging module import logging # Set basicConfig() to create a log file logging.basicConfig(filename='HumioDemo.log') # Emit a warning message logging.warning('You are learning Python logging!')5 Gửi nhật ký Python tới systemd-journaldGhi nhật ký bằng systemd-journald có một số lợi ích, bao gồm
Trên hầu hết các hệ thống Linux hiện đại sử dụng systemd, nếu ứng dụng Python của bạn chạy dưới dạng một đơn vị systemd, bất cứ thứ gì nó in ra thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn sẽ ghi vào systemd-journald. Điều đó có nghĩa là tất cả những gì bạn cần làm là gửi đầu ra nhật ký của mình tới thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn Ngoài các mô-đun có trong thư viện Python tiêu chuẩn, thư viện python-systemd và các trình bao bọc như trình bao bọc Python systemd giúp hợp lý hóa quá trình gửi nhật ký Python tới systemd-journald Ví dụ: để sử dụng python-systemd, trước tiên hãy cài đặt nó bằng trình quản lý gói của hệ thống của bạn. Sau đó thêm dòng sau vào mã của bạn from systemd import journal Đây là một tập lệnh Python đơn giản viết thông báo ở mức CẢNH BÁO tới tạp chí # Import the default logging module import logging # Set basicConfig() to create a log file logging.basicConfig(filename='HumioDemo.log') # Emit a warning message logging.warning('You are learning Python logging!')8 Sau khi chạy đoạn script trên, chúng tôi chạy # Import the default logging module import logging # Format the log message logging.basicConfig(level=logging.INFO) # Emit a warning message logging.info('Keep going, you are doing great!')6 và thấy đầu ra tương tự như # Import the standard syslog module import syslog # Emit an INFO-level message syslog.syslog(syslog.LOG_INFO,'Logging an INFO message with the syslog module!') # Emit a WARNING-level message syslog.syslog(syslog.LOG_WARNING,'Logging a WARNING message with the syslog module!')0 Các phương pháp hay nhất để phát nhật ký PythonTại thời điểm này, bạn sẽ có thể triển khai ghi nhật ký cơ bản cho các ứng dụng Python của mình. Tuy nhiên, còn nhiều điều nữa để tìm hiểu về mô-đun ghi nhật ký tiêu chuẩn. Đọc PEP 282, bản chính thức và là những cách tuyệt vời để tìm hiểu sâu hơn Khi bạn tiến bộ, hãy ghi nhớ các phương pháp hay nhất sau đây Bao gồm dấu thời gian với tin nhắn của bạnKhi nào là một phần quan trọng của một sự kiện. Do đó, bạn nên bao gồm dấu thời gian với mọi thông báo bạn phát ra. Với mô-đun ghi nhật ký mặc định, bạn có thể thêm dấu thời gian vào trình định dạng của mình, như chúng tôi đã làm với %(asctime)s trong ví dụ trước của chúng tôi. Bạn có thể tùy chỉnh thêm bằng cách sử dụng Có cơ chế xoay nhật kýNếu bạn lưu trữ nhật ký trên đĩa, hãy có chiến lược xoay vòng nhật ký để tránh các sự cố về dung lượng ổ đĩa. Với mô-đun ghi nhật ký mặc định của Python, hãy cân nhắc sử dụng Không khởi tạo trực tiếp các mô-đun ghi nhật kýThay vì khởi tạo trực tiếp các mô-đun ghi nhật ký, hãy sử dụng ghi nhật ký. getLogger(tên). Hệ thống phân cấp đặt tên mô-đun mặc định tương tự như hệ thống phân cấp gói của Python và hoàn toàn giống nhau nếu bạn đặt tên cho các trình ghi theo các mô-đun tương ứng của chúng, Tập trung nhật ký của bạnNhiều tệp nhật ký nằm rải rác trên nhiều hệ thống có thể trở nên khó sử dụng như những câu lệnh print() ban đầu chúng tôi muốn loại bỏ. Tập trung nhật ký của bạn để phân tích cú pháp và phân tích mang lại cho bạn khả năng quan sát trên quy mô lớn Ghi nhật ký Python hoạt động như thế nào?Python có ghi nhật ký mô-đun tích hợp cho phép ghi thông báo trạng thái vào một tệp hoặc bất kỳ luồng đầu ra nào khác . Tệp có thể chứa thông tin về phần nào của mã được thực thi và vấn đề nào đã phát sinh.
Ghi nhật ký getLogger (__ Tên __) để làm gì?getLogger(name) thường được thực thi. Hàm getLogger() chấp nhận một đối số duy nhất - tên của trình ghi nhật ký. Nó trả về một tham chiếu đến phiên bản trình ghi với tên được chỉ định nếu được cung cấp hoặc gốc nếu không . Nhiều lệnh gọi getLogger() có cùng tên sẽ trả về một tham chiếu đến cùng một đối tượng logger.
Làm cách nào để bạn đăng nhập đầu ra bằng Python?Đây là một ví dụ. . nhập nhật ký ghi nhật ký. basicConfig(level=log. . GỠ LỖI. nguồn gốc. Điều này sẽ được đăng nhập nhập nhật ký ghi nhật ký. basicConfig(filename='app. log', filemode='w', format='%(name)s - %(levelname)s - %(message)s') ghi nhật ký. . root - LỖI - Điều này sẽ được ghi vào một tập tin LỖI. nguồn gốc. Đây là một thông báo lỗi Làm cách nào để tạo nhiều cấp độ ghi nhật ký trong Python?Bạn có thể đặt cấp độ ghi nhật ký khác nhau cho mỗi trình xử lý ghi nhật ký nhưng có vẻ như bạn sẽ phải đặt cấp độ của trình ghi nhật ký thành "thấp nhất" . Trong ví dụ bên dưới, tôi đặt trình ghi nhật ký thành DEBUG, trình xử lý luồng thành INFO và TimedRotatingFileHandler thành DEBUG. Vì vậy, tệp có các mục GỠ LỖI và luồng chỉ xuất ra THÔNG TIN.
|