Việc triển khai trình ghi nhật ký đã là một singleton.
Nhiều lệnh gọi đến logging.getLogger ('someLogger') trả về một tham chiếu đến cùng một đối tượng trình ghi. Điều này không chỉ đúng trong cùng một mô-đun mà còn trên các mô-đun miễn là nó nằm trong cùng một quy trình thông dịch Python. Nó đúng đối với các tham chiếu đến cùng một đối tượng; ngoài ra, mã ứng dụng có thể xác định và cấu hình trình ghi nhật ký mẹ trong một mô-đun và tạo (nhưng không cấu hình) trình ghi nhật ký con trong một mô-đun riêng biệt và tất cả các lệnh gọi của trình ghi nhật ký đến con sẽ chuyển đến trình ghi mẹ. Đây là một mô-đun chính
Nguồn- Sử dụng đăng nhập nhiều mô-đun
Vì vậy, cách bạn nên sử dụng điều này là -
Giả sử chúng ta đã tạo và định cấu hình trình ghi nhật ký có tên là 'main_logger' trong mô-đun chính (chỉ đơn giản là định cấu hình trình ghi nhật ký, không trả về bất kỳ thứ gì).
# get the logger instance
logger = logging.getLogger("main_logger")
# configuration follows
...
Bây giờ trong một mô-đun con, nếu chúng ta tạo một trình ghi con theo hệ thống phân cấp đặt tên 'main_logger.sub_module_logger' , chúng ta không cần phải định cấu hình nó trong mô-đun con. Chỉ cần tạo bộ ghi theo hệ thống phân cấp đặt tên là đủ.
# get the logger instance
logger = logging.getLogger("main_logger.sub_module_logger")
# no configuration needed
# it inherits the configuration from the parent logger
...
Và nó cũng sẽ không thêm trình xử lý trùng lặp.
Xem câu hỏi này để có câu trả lời dài dòng hơn một chút.