Python timedrotingfilehandler记录到文件和std

2024-06-17 14:48:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用TimeDrotingFileHandler将简单的日志记录到我的应用程序中。但是,我将输出同时放入指定文件和标准错误中。我把问题简化为一个小例子:

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)

我的“日志文件”和这个程序的stderr中都有5个日志行。我做错什么了?


Tags: 文件import应用程序format标准logginghandlers错误
2条回答

这是只在日志文件上打印而不打印到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)

logging.basicConfig设置打印到标准错误的处理程序。 logger.addHandler(loghandler)设置TimeDrotingFileHandler。

是否要将输出压制为标准错误? 如果是,只需删除对logging.basicConfig的调用。

相关问题 更多 >