Как этот способ ведения журнала можно исправить - PullRequest
0 голосов
/ 31 декабря 2011

Мой модуль регистрации: 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 Ответ

2 голосов
/ 31 декабря 2011

Вы ожидаете, что self.logger будет экземпляром средства ведения журнала, но в настоящее время MyLog.MyLogC является классом, а MyLogger является методом для этого класса.

Попробуйте self.logger = MyLog.MyLogC().MyLogger() (обратите внимание на парены).

Сначала создается объект MyLogC, затем вызывается метод MyLogger, чтобы получить фактический экземпляр регистратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...