我正在尝试使用TimedRotatingFileHandler将简单的日志记录包含到我的应用程序中。但是我将输出都输入到指定文件和标准错误中。我把问题简化为一个小例子:
import logging, logging.handlers
import sys
logging.basicConfig(format='%(asctime)s %(message)s')
loghandler = logging.handlers.TimedRotatingFileHandler("logfile",when="midnight")
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(loghandler)
for k in range(5):
logger.info("Line %d" % k)
我的'logfile'和这个程序的stderr都有5个日志行。我做错了什么?
答案 0 :(得分:10)
这是你可以在日志文件上打印而不是stdout / stderr的方式:
import logging
from logging.handlers import TimedRotatingFileHandler
logHandler = TimedRotatingFileHandler("logfile",when="midnight")
logFormatter = logging.Formatter('%(asctime)s %(message)s')
logHandler.setFormatter( logFormatter )
logger = logging.getLogger( 'MyLogger' )
logger.addHandler( logHandler )
logger.setLevel( logging.INFO )
for k in range(5):
logger.info("Line %d" % k)
答案 1 :(得分:4)
logging.basicConfig
设置一个打印到标准错误的处理程序。
logger.addHandler(loghandler)
设置TimedRotatingFileHandler。
您是否希望将输出压制为标准错误?
如果是这样,只需删除对logging.basicConfig
的调用。