Trình ghi nhật ký Python xuất ra ở đâu?
Ghi nhật ký là quá trình ghi thông tin vào tệp nhật ký. Tệp nhật ký chứa thông tin về các sự kiện khác nhau đã xảy ra trong hệ điều hành, phần mềm hoặc trong giao tiếp Show
Mục đích ghi nhật kýGhi nhật ký được thực hiện cho các mục đích sau
Ghi nhật ký không giới hạn để xác định lỗi trong quá trình phát triển phần mềm. Nó cũng được sử dụng để phát hiện sự cố bảo mật, giám sát vi phạm chính sách, cung cấp thông tin trong trường hợp có sự cố, tìm kiếm ứng dụng bị tắc nghẽn hoặc tạo dữ liệu sử dụng Các sự kiện cần được ghi lại bao gồm lỗi xác thực đầu vào, lỗi xác thực và ủy quyền, lỗi ứng dụng, thay đổi cấu hình cũng như khởi động và tắt ứng dụng Những sự kiện không đăng nhậpCác sự kiện không được ghi lại bao gồm mã nguồn ứng dụng, giá trị nhận dạng phiên, mã thông báo truy cập, dữ liệu cá nhân nhạy cảm, mật khẩu, chuỗi kết nối cơ sở dữ liệu, khóa mã hóa, tài khoản ngân hàng và dữ liệu chủ thẻ Sau đây là một số phương pháp hay nhất để thực hiện ghi nhật ký
Mô-đun đăng nhậpMô-đun ghi nhật ký Python xác định các hàm và lớp triển khai hệ thống ghi nhật ký sự kiện linh hoạt cho các ứng dụng và thư viện Mô-đun ghi nhật ký có bốn thành phần chính. trình ghi nhật ký, trình xử lý, bộ lọc và trình định dạng. Trình ghi nhật ký hiển thị giao diện mà mã ứng dụng trực tiếp sử dụng. Trình xử lý gửi bản ghi nhật ký (được tạo bởi trình ghi nhật ký) đến đích thích hợp. Bộ lọc cung cấp cơ sở chi tiết hơn để xác định bản ghi nhật ký nào sẽ xuất ra. Trình định dạng chỉ định bố cục của các bản ghi nhật ký trong đầu ra cuối cùng Hệ thống phân cấp ghi nhật ký PythonTrình ghi nhật ký Python tạo thành một hệ thống phân cấp. Một logger tên là $ set_level.py This is a warning message This is an error message This is a critical message2 là cha của $ set_level.py This is a warning message This is an error message This is a critical message3 Trình ghi nhật ký con truyền thông điệp tới trình xử lý được liên kết với trình ghi nhật ký tổ tiên của chúng. Do đó, không cần thiết phải xác định và định cấu hình trình xử lý cho tất cả các trình ghi nhật ký trong ứng dụng. Chỉ cần định cấu hình trình xử lý cho trình ghi nhật ký cấp cao nhất và tạo trình ghi nhật ký con khi cần Các cấp độ được sử dụng để xác định mức độ nghiêm trọng của một sự kiện. Có sáu cấp độ đăng nhập
Nếu mức ghi nhật ký được đặt thành $ set_level.py This is a warning message This is an error message This is a critical message4, tất cả các thông báo $ set_level.py This is a warning message This is an error message This is a critical message4, $ set_level.py This is a warning message This is an error message This is a critical message6 và $ set_level.py This is a warning message This is an error message This is a critical message7 sẽ được ghi vào tệp nhật ký hoặc bảng điều khiển. Nếu nó được đặt thành $ set_level.py This is a warning message This is an error message This is a critical message6, chỉ các tin nhắn $ set_level.py This is a warning message This is an error message This is a critical message6 và $ set_level.py This is a warning message This is an error message This is a critical message7 được ghi lại Loggers có một khái niệm về mức độ hiệu quả. Nếu một mức không được đặt rõ ràng trên bộ ghi nhật ký, thì mức gốc của nó sẽ được sử dụng làm mức hiệu quả của nó. Nếu cấp độ gốc không được đặt mức rõ ràng, thì cấp độ gốc của nó sẽ được kiểm tra, v.v. - tất cả tổ tiên được tìm kiếm cho đến khi tìm thấy cấp độ được đặt rõ ràng Khi bộ ghi nhật ký được tạo bằng #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())1, mức được đặt thành #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())2. Nếu cấp độ ghi nhật ký không được đặt rõ ràng với #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())3, thì các thông báo sẽ được gửi đến cha mẹ của bộ ghi nhật ký. Chuỗi trình ghi nhật ký tổ tiên của trình ghi nhật ký được duyệt qua cho đến khi tìm thấy tổ tiên có cấp độ khác với #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())2 hoặc đạt đến gốc. Trình ghi nhật ký gốc có mức thiết lập $ set_level.py This is a warning message This is an error message This is a critical message4 mặc định Tất cả các logger là hậu duệ của logger gốc. Mỗi logger chuyển các thông điệp nhật ký cho cha mẹ của nó. Trình ghi nhật ký mới được tạo bằng phương pháp #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())6. Gọi hàm không có tên ( #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())1) trả về bộ ghi gốc Bộ ghi gốc luôn có một mức rõ ràng được thiết lập, theo mặc định là $ set_level.py This is a warning message This is an error message This is a critical message4 Trình lưu trữ gốc nằm ở đầu hệ thống phân cấp và luôn hiện diện, ngay cả khi không được định cấu hình. Nói chung, chương trình hoặc thư viện không nên đăng nhập trực tiếp vào bộ ghi gốc. Thay vào đó, một bộ ghi cụ thể cho chương trình nên được cấu hình. Trình ghi gốc có thể được sử dụng để dễ dàng bật và tắt tất cả các trình ghi nhật ký từ tất cả các thư viện Mô-đun #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())9 có các phương thức đơn giản có thể được sử dụng ngay mà không cần bất kỳ cấu hình nào. Điều này có thể được sử dụng để đăng nhập đơn giản $ set_level.py This is a warning message This is an error message This is a critical message8 Ví dụ gọi năm phương thức của mô-đun #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())9. Các tin nhắn được ghi vào bàn điều khiển $ set_level.py This is a warning message This is an error message This is a critical message0 Lưu ý rằng trình ghi gốc được sử dụng và chỉ có ba thông báo được viết. Điều này là do theo mặc định, chỉ những tin nhắn có mức cảnh báo trở lên mới được viết Mức ghi nhật ký được đặt với #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())3. Nó đặt ngưỡng cho bộ ghi này thành $ set_level.py This is a warning message This is an error message This is a critical message22. Các thông báo ghi nhật ký ít nghiêm trọng hơn $ set_level.py This is a warning message This is an error message This is a critical message22 sẽ bị bỏ qua $ set_level.py This is a warning message This is an error message This is a critical message4 Trong ví dụ, chúng tôi thay đổi mức ghi nhật ký thành $ set_level.py This is a warning message This is an error message This is a critical message24 $ set_level.py This is a warning message This is an error message This is a critical message6 #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())1 trả về một logger với tên được chỉ định. Nếu tên là $ set_level.py This is a warning message This is an error message This is a critical message26, nó sẽ trả về bộ ghi gốc. Tên có thể là một chuỗi được phân tách bằng dấu chấm xác định phân cấp ghi nhật ký; . b', hoặc 'a. b. c'. Lưu ý rằng có một tên gốc ẩn, không được hiển thị $ set_level.py This is a warning message This is an error message This is a critical message Bây giờ tất cả các tin nhắn đã được viết Mức ghi nhật ký hiệu quả của PythonCấp độ ghi nhật ký hiệu quả là cấp độ được đặt rõ ràng hoặc được xác định từ cha mẹ của bộ ghi nhật ký #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel()) Trong ví dụ này, chúng tôi kiểm tra mức ghi nhật ký hiệu quả của hai thiết bị ghi nhật ký $ set_level.py This is a warning message This is an error message This is a critical message2 Cấp độ của $ set_level.py This is a warning message This is an error message This is a critical message27 không được đặt; $ set_level.py This is a warning message This is an error message This is a critical message3 Trình xử lý là một đối tượng chịu trách nhiệm gửi các thông điệp tường trình thích hợp (dựa trên mức độ nghiêm trọng của thông điệp tường trình) đến đích được chỉ định của trình xử lý Trình xử lý được truyền giống như các cấp. Nếu bộ ghi không có bộ xử lý, chuỗi tổ tiên của nó sẽ tìm kiếm bộ xử lý $ set_level.py This is a warning message This is an error message This is a critical message4 Ví dụ tạo hai trình xử lý cho trình ghi nhật ký. trình xử lý tệp và trình xử lý bảng điều khiển $ set_level.py This is a warning message This is an error message This is a critical message5 $ set_level.py This is a warning message This is an error message This is a critical message28 gửi bản ghi nhật ký đến tệp $ set_level.py This is a warning message This is an error message This is a critical message29 $ set_level.py This is a warning message This is an error message This is a critical message00 $ set_level.py This is a warning message This is an error message This is a critical message30 gửi các bản ghi nhật ký tới một luồng. Nếu luồng không được chỉ định, thì $ set_level.py This is a warning message This is an error message This is a critical message31 được sử dụng $ set_level.py This is a warning message This is an error message This is a critical message01 Trình xử lý được thêm vào bộ ghi với $ set_level.py This is a warning message This is an error message This is a critical message32 Trình định dạng nhật ký PythonTrình định dạng là một đối tượng định cấu hình thứ tự, cấu trúc và nội dung cuối cùng của bản ghi nhật ký. Ngoài chuỗi thông báo, các bản ghi nhật ký cũng bao gồm ngày và giờ, tên nhật ký và mức độ nghiêm trọng của nhật ký $ set_level.py This is a warning message This is an error message This is a critical message02 Ví dụ tạo một trình ghi bảng điều khiển và thêm một trình định dạng vào trình xử lý của nó $ set_level.py This is a warning message This is an error message This is a critical message03 Trình định dạng được tạo. Nó bao gồm ngày giờ, tên trình ghi nhật ký, tên cấp độ ghi nhật ký và thông báo tường trình $ set_level.py This is a warning message This is an error message This is a critical message04 Bộ định dạng được đặt thành trình xử lý với $ set_level.py This is a warning message This is an error message This is a critical message33 $ set_level.py This is a warning message This is an error message This is a critical message05 Thông báo với định dạng đã xác định được hiển thị trong bảng điều khiển $ set_level.py This is a warning message This is an error message This is a critical message34 định cấu hình bộ ghi gốc. Nó thực hiện cấu hình cơ bản cho hệ thống ghi nhật ký bằng cách tạo trình xử lý luồng với trình định dạng mặc định. $ set_level.py This is a warning message This is an error message This is a critical message35, $ set_level.py This is a warning message This is an error message This is a critical message36, $ set_level.py This is a warning message This is an error message This is a critical message37, $ set_level.py This is a warning message This is an error message This is a critical message38 và $ set_level.py This is a warning message This is an error message This is a critical message39 gọi $ set_level.py This is a warning message This is an error message This is a critical message34 tự động nếu không có trình xử lý nào được xác định cho bộ ghi gốc $ set_level.py This is a warning message This is an error message This is a critical message06 Ví dụ cấu hình bộ ghi gốc với $ set_level.py This is a warning message This is an error message This is a critical message34 $ set_level.py This is a warning message This is an error message This is a critical message07 Với $ set_level.py This is a warning message This is an error message This is a critical message42, chúng tôi đặt tệp mà chúng tôi ghi thông báo tường trình. $ set_level.py This is a warning message This is an error message This is a critical message43 xác định những gì được ghi vào tệp; . Với ________ 344, chúng tôi đặt ngưỡng ghi nhật ký $ set_level.py This is a warning message This is an error message This is a critical message08 Sau khi chạy chương trình, chúng tôi có năm thông báo được ghi vào tệp $ set_level.py This is a warning message This is an error message This is a critical message29 $ set_level.py This is a warning message This is an error message This is a critical message46 đọc cấu hình ghi nhật ký từ tệp định dạng configparser $ set_level.py This is a warning message This is an error message This is a critical message09 $ set_level.py This is a warning message This is an error message This is a critical message47 xác định trình ghi nhật ký, trình xử lý và trình định dạng $ set_level.py This is a warning message This is an error message This is a critical message40 Ví dụ đọc tệp cấu hình ghi nhật ký từ $ set_level.py This is a warning message This is an error message This is a critical message47 $ set_level.py This is a warning message This is an error message This is a critical message41 Dữ liệu động được ghi lại bằng cách sử dụng định dạng chuỗi $ set_level.py This is a warning message This is an error message This is a critical message42 Ví dụ ghi dữ liệu tùy chỉnh vào thông điệp tường trình $ set_level.py This is a warning message This is an error message This is a critical message43 Đây là thông điệp tường trình Ngày giờ được bao gồm trong thông điệp tường trình với bản ghi nhật ký $ set_level.py This is a warning message This is an error message This is a critical message49. Với tùy chọn cấu hình $ set_level.py This is a warning message This is an error message This is a critical message50, chúng ta có thể định dạng chuỗi ngày giờ $ set_level.py This is a warning message This is an error message This is a critical message44 Ví dụ định dạng ngày giờ của thông điệp tường trình $ set_level.py This is a warning message This is an error message This is a critical message45 Chúng tôi đưa chuỗi ngày giờ vào nhật ký với $ set_level.py This is a warning message This is an error message This is a critical message49 $ set_level.py This is a warning message This is an error message This is a critical message46 Tùy chọn $ set_level.py This is a warning message This is an error message This is a critical message50 định dạng chuỗi ngày giờ $ set_level.py This is a warning message This is an error message This is a critical message47 Lưu ý sự khác biệt trong định dạng chuỗi ngày giờ Dấu vết ngăn xếp nhật ký PythonTheo dõi ngăn xếp là một ngăn xếp cuộc gọi của các chức năng đã được chạy đến điểm ngoại lệ bị ném. Dấu vết ngăn xếp được bao gồm trong tùy chọn $ set_level.py This is a warning message This is an error message This is a critical message53 $ set_level.py This is a warning message This is an error message This is a critical message48 Trong ví dụ này, chúng tôi ghi nhật ký ngoại lệ được đưa ra khi chúng tôi cố gắng truy cập chỉ mục danh sách không tồn tại $ set_level.py This is a warning message This is an error message This is a critical message49 Dấu vết ngăn xếp được đưa vào nhật ký bằng cách đặt $ set_level.py This is a warning message This is an error message This is a critical message53 thành $ set_level.py This is a warning message This is an error message This is a critical message55 $ set_level.py This is a warning message This is an error message This is a critical message60 Dấu vết ngăn xếp được bao gồm trong nhật ký #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())1 trả về một logger với tên được chỉ định. Nếu không có tên nào được chỉ định, nó sẽ trả về bộ ghi gốc. Đó là một thực tế phổ biến để đặt tên mô-đun ở đó với $ set_level.py This is a warning message This is an error message This is a critical message57 Tất cả các cuộc gọi đến chức năng này với một tên đã cho trả về cùng một phiên bản trình ghi nhật ký. Điều này có nghĩa là các phiên bản trình ghi nhật ký không bao giờ cần phải được chuyển giữa các phần khác nhau của ứng dụng $ set_level.py This is a warning message This is an error message This is a critical message61 Ví dụ tạo một logger mới với #!/usr/bin/python import logging main_logger = logging.getLogger('main') main_logger.setLevel(5) dev_logger = logging.getLogger('main.dev') print(main_logger.getEffectiveLevel()) print(dev_logger.getEffectiveLevel())1. Nó được cung cấp một trình xử lý tệp và một trình định dạng $ set_level.py This is a warning message This is an error message This is a critical message62 Một bộ ghi có tên $ set_level.py This is a warning message This is an error message This is a critical message2 được tạo; $ set_level.py This is a warning message This is an error message This is a critical message63 Trình xử lý tệp được tạo. Các tin nhắn sẽ được ghi vào tệp $ set_level.py This is a warning message This is an error message This is a critical message001 $ set_level.py This is a warning message This is an error message This is a critical message64 Một trình định dạng được tạo. Nó bao gồm thời gian, tên trình ghi nhật ký, cấp độ ghi nhật ký và thông báo để đăng nhập. Bộ định dạng được đặt thành trình xử lý với $ set_level.py This is a warning message This is an error message This is a critical message33 $ set_level.py This is a warning message This is an error message This is a critical message65 Trình xử lý được thêm vào bộ ghi với $ set_level.py This is a warning message This is an error message This is a critical message32 $ set_level.py This is a warning message This is an error message This is a critical message66 Đây là những thông điệp tường trình bằng văn bản Chi tiết ghi nhật ký có thể được xác định trong tệp cấu hình YAML. YAML là ngôn ngữ tuần tự hóa dữ liệu có thể đọc được của con người. Nó thường được sử dụng cho các tập tin cấu hình $ set_level.py This is a warning message This is an error message This is a critical message67 Chúng ta cần cài đặt mô-đun $ set_level.py This is a warning message This is an error message This is a critical message004 $ set_level.py This is a warning message This is an error message This is a critical message68 Trong tệp cấu hình, chúng tôi đã xác định nhiều trình định dạng, trình xử lý và trình ghi nhật ký khác nhau. Tùy chọn $ set_level.py This is a warning message This is an error message This is a critical message005 ngăn việc lan truyền các thông điệp tường trình tới các bộ ghi chính; . Nếu không, các tin nhắn sẽ được nhân đôi $ set_level.py This is a warning message This is an error message This is a critical message69 Trong ví dụ này, chúng tôi đọc tệp cấu hình và sử dụng trình ghi nhật ký $ set_level.py This is a warning message This is an error message This is a critical message006 $ set_level.py This is a warning message This is an error message This is a critical message0 Khi chúng tôi chạy chương trình, có hai thông báo trên bàn điều khiển. Trình xử lý bảng điều khiển sử dụng trình định dạng đơn giản với ít thông tin hơn $ set_level.py This is a warning message This is an error message This is a critical message1 Có các thông điệp tường trình bên trong tệp $ set_level.py This is a warning message This is an error message This is a critical message29. Chúng được tạo bởi bộ định dạng mở rộng với nhiều thông tin hơn Bộ ghi Python có ghi vào thiết bị xuất chuẩn không?ghi nhật ký - Tạo trình ghi nhật ký Python xuất tất cả thông báo ra thiết bị xuất chuẩn ngoài tệp nhật ký . Stack Overflow for Teams – Bắt đầu cộng tác và chia sẻ kiến thức tổ chức.
Python lưu trữ dữ liệu trong tệp nhật ký như thế nào?Cách bắt đầu ghi nhật ký tin nhắn bằng Python . Nhập mô-đun ghi nhật ký Định cấu hình bộ ghi bằng phương thức basicConfig(). . Chỉ định tệp mà thông điệp tường trình được gửi Xác định mức độ “nghiêm trọng” của các thông điệp bản ghi Định dạng thông điệp bản ghi Nối thêm hoặc ghi đè lên các thông điệp tường trình trước đó trong tệp |