2012-06-13 27 views
5

Tôi hiện đang viết một số mô-đun Python thực hiện một số I/O.Nguyên tắc cho phép ghi nhật ký tùy chỉnh từ mô-đun Python là gì?

Các mô-đun có thể được sử dụng trực tiếp bởi nhà phát triển khác hoặc được gọi là máng một tập lệnh đơn giản mà tôi đã viết, chủ yếu cho mục đích thử nghiệm.

Tôi đã sử dụng mô đun ghi nhật ký và thiết lập StreamHandler để hiển thị nhật ký về đầu ra lỗi chuẩn và hoạt động tốt. Tuy nhiên tôi không chắc chắn làm thế nào để làm cho các bản ghi tùy biến. Rõ ràng là tôi không muốn ép buộc các bản ghi đó được ghi vào đầu ra tiêu chuẩn khi một nhà phát triển sử dụng các lớp của tôi. Tôi muốn đưa ra một lựa chọn, lý tưởng là để anh ta thêm các trình xử lý của riêng mình hoặc không có trình xử lý nào nếu anh ta không muốn các bản ghi.

Có bất kỳ hướng dẫn nào về ghi nhật ký Python cho trường hợp này không? Mọi lớp học có logger riêng không?

Tóm lại, bạn làm như thế nào và tại sao?

Cảm ơn.

Trả lời

2

Hãy chắc chắn rằng các module dự định sẽ được sử dụng như thư viện không thêm bất kỳ bộ xử lý (trừ một trường hợp NullHandler đến từ trên mức logger của thư viện).

Cách tốt nhất là sử dụng logger ở cấp module, sử dụng

logger = logging.getLogger(__name__) 

và, nếu cần thiết, sử dụng logger con của logger này.

Bằng cách đó, bản đồ sự kiện ghi nhật ký của bạn vào phân cấp gói Python và người dùng mô-đun thư viện của bạn có thể chọn có sử dụng ghi nhật ký hay không và cách sử dụng.

Có thể thêm trình xử lý vào những thứ có nghĩa là chạy dưới dạng tập lệnh.

Không có API tiện lợi để thêm trình xử lý vào nhật ký của bạn, miễn là người dùng của bạn có thể kiểm soát xem có nên gọi các API đó hay không.

+0

Cảm ơn bạn rất nhiều. Nhờ lời khuyên của bạn, tôi có thể sửa chữa hệ thống đăng nhập của mình để sạch hơn và tùy chỉnh hơn. – ereOn

1

Có một hướng dẫn rất tốt trên các module khai thác gỗ cho python

http://docs.python.org/howto/logging.html

+0

Cảm ơn bạn rất nhiều vì đã hướng dẫn. Đó là một đọc rất thú vị. Tôi ước tôi cũng có thể chấp nhận câu trả lời này. Upvoting nó cho sự công bằng. – ereOn

Các vấn đề liên quan