Python TimedRotatingFileHandler记录到文件和stderr

Tsf*_*Tsf 4 python logging

我试图使用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)
Run Code Online (Sandbox Code Playgroud)

我在'logfile'和这个程序的stderr中得到了5个日志行.我究竟做错了什么?

Cin*_*quo 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)
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 5

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

您希望将输出抑制为标准错误吗?如果是这样,只需删除对 的调用即可logging.basicConfig