[英]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.