Hướng dẫn python logging multiple modules - python ghi nhật ký nhiều mô-đun
Tôi muốn thêm giải pháp của mình (dựa trên việc ghi nhật ký Cookbook và các bài viết và đề xuất khác từ chủ đề này. Tuy nhiên, tôi phải mất khá nhiều thời gian để tìm ra, tại sao nó không hoạt động ngay lập tức tôi mong đợi. Vì vậy, tôi đã tạo ra một chút Dự án kiểm tra để tìm hiểu làm thế nào ghi nhật ký đang hoạt động. Vì tôi đã tìm ra nó, tôi muốn chia sẻ giải pháp của mình, có lẽ nó có thể giúp đỡ ai đó. Tôi biết một số mã của tôi có thể không phải là thực hành tốt nhất, nhưng tôi vẫn đang học. Tôi đã để lại các chức năng cấu trúc dự án my_log_test (được nhân bản/đơn giản hóa từ một dự án khác mà tôi đang làm) (cloned/simplified from another project I work on)
Yêu cầu Một vài điều khác biệt hoặc tôi chưa thấy được đề cập rõ ràng trong sự kết hợp mà tôi sử dụng:
Vì vậy, về cơ bản, điều đó có nghĩa là, tôi cần khởi tạo bộ ghi gốc trong 0 (chỉ khi gọi trực tiếp chúng).root logger in daemon.py (always)
and in the modules mod1.py and 0 (only when calling them directly).Để làm cho init này trong một số mô -đun dễ dàng hơn, tôi đã tạo 6, những gì được mô tả trong sách nấu ăn.Sai lầm của tôi Trước đó, sai lầm của tôi trong mô -đun đó là khởi động logger với 7 (logger mô -đun) thay vì sử dụng 8 (để lấy logger gốc).root logger).Vấn đề đầu tiên là, khi được gọi từ 0. Do đó, bộ ghi mô -đun trong mod1.py với không gian tên "chưa từng có" 2 do đó không gắn vào logger khác và tôi sẽ không thấy đầu ra nhật ký từ Mod1."Vấn đề" thứ hai là, chương trình chính của tôi là ở Giải pháp làm việc Đây là từ sách nấu ăn nhưng trong một mô -đun riêng biệt. Tôi cũng đã thêm một hàm 5 mà tôi có thể gọi từ daemon, để xóa nhật ký cũ hơn x ngày.
Để chạy deamon.py (thông qua 7
Để chạy deamon.py (trực tiếp) sử dụng 8
Để chạy mod1.py (trực tiếp) sử dụng 9
Để chạy mod2.py (trực tiếp) sử dụng 0
Hạnh phúc nếu nó giúp. Rất vui khi nhận được phản hồi là tốt! |