【发布时间】:2009-10-28 19:15:41
【问题描述】:
我(只是为了好玩)构建了 3 个类来帮助我记录工作中的一些事件。
这是他们:
class logMessage:
def __init__(self,objectName,message,messageType):
self.objectName = objectName
self.message = message
self.messageType = messageType
self.dateTime = datetime.datetime.now()
def __str__(self):
return str(self.dateTime) + "\nObjeto de valor " + str(self.objectName) + " gerou uma mensagem do tipo: " + self.messageType + "\n" + self.message + "\n"
class logHandler():
def __init__(self):
self.messages = []
def __getitem__(self,index):
return self.messages[index]
def __len__(self):
return len(self.messages)
def __str__(self):
colecaoString = ""
for x in self.messages:
colecaoString += str(x) + "\n"
return colecaoString
def dumpItem(self,index):
temp = self.messages[index]
del self.messages[index]
return str(temp)
def append(self,log):
if isinstance(log,logMessage.logMessage):
self.messages.append(log)
else:
self.newLogMessage(log, "Wrong object type. Not a log message. Impossible to log.","Error")
def newLogMessage(self,objectInstance,message,messageType):
newMessage = logMessage.logMessage(objectInstance,message,messageType)
self.append(newMessage)
这是我的问题:
假设我有其他类,例如 Employee,我想记录在该类内部发生的事件。
如果不总是将 logHandler 实例传递给我想要记录的每个其他类,我该如何做到这一点?我的想法是将 logHandler 传递给每个 init 函数,然后在其中使用它。
不做我指定的事情怎么办?
它将如何与全局 logHandler 一起工作?有没有办法在运行时发现程序中是否有 logHandler 实例,并使用它来创建消息?
谢谢
【问题讨论】:
标签: python oop logging global-variables