簡體   English   中英

與模塊共享的 Python Logger

[英]Python Logger shared with modules

當我們有其他模塊時,我有一個關於如何共享 Python 日志記錄設備的問題。

假設我有main.py導入文件protocol.py並聲明一個記錄器變量。

import logging
from protocol import Protocol

log = logging.getLogger(__name__)
log.debug("Currently in main.py")

protocol_obj_1 = Protocol(log)
protocol_obj_2 = Protocol()

protocol.py ,假設我希望通過共享相同的日志變量來記錄其他數據。

class Protocol:
    def __init__(self, log_var = None):
        self.log_var = log_var

    def logData(self):
        if self.log_var is not None:
            self.log_var.debug("Currently within class Protocol")
        else:
            print("Currently no logging")

這是一種 Pythonic 方法嗎? 或者是否有更好的方法與其他模塊共享日志記錄設備?

在模塊中創建記錄器的最慣用的 Python 方法是,如文檔所述

命名記錄器時使用的一個好的約定是使用模塊級記錄器,在每個使用日志記錄的模塊中,命名如下:

 logger = logging.getLogger(__name__)

但是,您希望不同的模塊登錄到同一個記錄器的情況並不少見。 例如,當它在 Python(分發)包(例如,在 PyPI 上分發)中完成時。 然后,如果包相對,您可以在每個模塊中使用__package__代替。

logger = logging.getLogger(__package__)

如果您的分發包中有導入包,那么您可能希望在每個模塊中提供硬編碼名稱。

logger = logging.getLogger('mypackage')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM