まず、使用している API が存在しません。モジュールレベルでlog.msg
は文書化されていませんが、ここに文書化されています: に渡されるすべての非キーワードパラメータlog.msg
はメッセージの一部であるため、ここではメッセージレベルを設定していませんが、メッセージに整数を追加しています。
log.msg('agent nr.1 has free slots', logging.DEBUG) # debug message
次に、あなたの質問に答えるために、はい、どのメッセージをログに記録するかを決定するためにログ レベルを使用するように twisted に指示できますが、これはデフォルトのロガーの動作ではありません。幸いなことに、ツイストをパーソナライズすることはある程度自然なことです (やり方を知っていれば)。
twisted.python.log.FileLogObserver
logLevel を処理するロガー オブザーバーを作成する必要があります。たとえば、拡張できます
。
import logging
from twisted.python import log
class LevelFileLogObserver(log.FileLogObserver):
def __init__(self, f, level=logging.INFO):
log.FileLogObserver.__init__(self, f)
self.logLevel = level
def emit(self, eventDict):
if eventDict['isError']:
level = logging.ERROR
elif 'level' in eventDict:
level = eventDict['level']
else:
level = logging.INFO
if level >= self.logLevel:
log.FileLogObserver.emit(self, eventDict)
次に、それを登録する必要があります:
from twisted.python import logfile
f = logfile.LogFile("someFile.log", '/some/path/', rotateLength=1000,
maxRotatedFiles=100)
logger = LevelFileLogObserver(f, logging.DEBUG)
twisted.python.log.addObserver(logger.emit)
twistd を使用する場合は、--logger
オプションを介して渡すことができます:
# mylogger.py
# import LevelFileLogObserver
from twisted.python import logfile
f = logfile.LogFile("someFile.log", '/some/path/', rotateLength=1000,
maxRotatedFiles=100)
flobserver = LevelFileLogObserver(f)
observer = flobserver.emit
# twistd invocation
twistd --logger=mylogger.observer
これで、定義した新しい API を使用できます。
log.msg('the level of this message is INFO')
log.msg('the level of this message is INFO', level=logging.INFO)
log.msg('the level of this message is DEBUG', level=logging.DEBUG)
log.msg('the level of this message is ERROR', level=logging.ERROR)
log.err('the level of this message is ERROR')