如何纠正这种记录方式

时间:2011-12-30 20:09:50

标签: python logging

我的日志记录模块:MyLog.py

import logging

class MyLogC(logging.Filterer):
      def __init__(self):
          self.myLogger = logging.getLogger('')
          self.myLogger.setLevel(logging.DEBUG)
          self.myLogFile = logging.FileHandler("./ex.log","w")
          self.myLogger.addHandler(self.myLogFile)
          self.myLogFormatter= logging.Formatter('%(asctime)s %(levelname)s %(message)s')
          self.myLogFile.setLevel(logging.DEBUG)
          self.myLogFile.setFormatter(self.myLogFormatter)


      def MyLogger(self):
          return self.myLogger

在其他模块中:MyTh.py

import MyLog

class MyThread(threading.Thread):

      def __init__(self,name,value):
          threading.Thread.__init__(self,None,MyClient,name,(),None,None)
          ...
          self.logger=MyLog.MyLogC.MyLogger


      def run(self):
          ...
          self.logger.info("abc")

并使用

self.logger=MyLog.MyLogC.MyLogger 

但是我在使用时得到('function'对象没有属性'info')错误:

self.logger.info("abc")

我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您希望self.logger成为记录器实例,但目前MyLog.MyLogC是一个类,而MyLogger是该类的方法。

尝试self.logger = MyLog.MyLogC().MyLogger()(注意parens)。

首先创建一个MyLogC对象,然后在其上调用MyLogger方法来获取实际的记录器实例。