我建立了(只是爲了好玩)3班,幫助我記錄我的工作中的一些事件。在Python中記錄事件;如何在類中記錄事件?
這裏有他們:
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)
這裏是我的問題:
可以想象我有其他類,如員工,我想記錄那些發生內部的類的事件。
我怎麼能做到這一點,而不總是將logHandler實例傳遞給我想要登錄的其他類?我的想法是將logHandler傳遞給每個init函數,然後在其中使用它。
如何做到這一點,而不做我指定的?
它將如何與全局logHandler一起工作?有沒有辦法在運行時發現程序中是否有logHandler實例,並使用它來創建消息?
感謝
感謝您的答案Pynt。這是我想避免的,但這是一個好的解決方案。 任何其他的思想? – 2009-10-28 19:32:30