首先,您使用的api不存在。它没有记录在模块中
级别但log.msg 是documented here:所有非关键字参数都通过
到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)
那你必须register it:
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')