なるべく再開できるよう頑張ります。私が書いたこのクラスがあります:
ロギング クラス
import logging, logging.handlers.TimedRotatingFileHandler
class Logger(object):
def __init__(self, log_filename):
logging.basicConfig(format='%(asctime)s %(message)s')
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
loghandler = TimedRotatingFileHandler(
log_filename, when="midnight", backupCount=50
)
loghandler.setFormatter(formatter)
self.logger = logging.getLogger()
self.logger.setLevel(logging.INFO)
self.logger.addHandler(loghandler)
def getLogger(self):
return self.logger
確かにうまく機能します。Logger インスタンスを使用するスクリプトがあり、そのスクリプト内で Logger も使用するクラスをインスタンス化すると、次のような問題が発生します。
脚本
import ClassA
A = ClassA()
log = Logger(log_filename='script_logger.log')
logger = log.getLogger()
logger.info('Initiated Script')
while True:
logger.info('Looping')
A.run()
私のクラスは次のようになります。
ClassA モジュール
class ClassA(object):
def __init__(self):
log = Logger(log_filename='class_logger.log')
self.logger = log.getLogger()
self.logger.info('Started ClassA')
def run(self):
self.logger.info('Into method run')
これで、2 つの別々のログ ファイルが作成されるはずですがclass_logger.log
、script_logger.log
それは問題なく動作しますが、両方のファイルの内容は 1 行ずつまったく同じです。
したがってscript_logger.log
、class_logger.log
次のコンテンツがあります。
Started classA
Initiated Script
Looping
Into method run
Looping
Into method run
...
手がかりはありますか?