我找不到足够的文档来使其工作。我的非长时间运行进程在stderr上显示进度信息并使用stdout输出。我希望在进程退出时日志消息全部汇集在一起,并且还应将其记录到文件中。根据我所查找的文档,MemoryHandler
和FileHandler
是我需要的东西。但是当我像下面这样设置它时,既没有在文件中也没有退出时得到任何输出。任何帮助将不胜感激。
import logging, logging.handlers, atexit, sys
filename = 'mylogfile.txt'
logLevel = logging.DEBUG
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
streamhandler = logging.StreamHandler(sys.stderr)
streamhandler.setLevel(logLevel)
streamhandler.setFormatter(formatter)
memoryhandler = logging.handlers.MemoryHandler(1024*100, logLevel, streamhandler)
filehandler = logging.FileHandler(filename)
filehandler.setLevel(logLevel)
filehandler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(memoryhandler)
logger.addHandler(filehandler)
def flush():
memoryhandler.flush()
atexit.register(flush)
logger.debug("Logger has Initialized")
flushLevel
,因为如果未指定,则默认值为logging.ERROR
。 - Vinay Sajipatexit.register(flush)
)。这回答了你的问题吗? 编辑:关于容量,文档在这里并不明确,但就我所记得的,它是以字节为单位指定的。 - Michel Müller