python日志模块没有向fi写入任何内容

2024-04-20 07:12:35 发布

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

我正在尝试编写一个服务器,将异常记录到控制台和文件中。我从食谱上删掉了一些代码。这里是:

logger = logging.getLogger('server_logger')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('server.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to logger
logger.addHandler(ch)
logger.addHandler(fh)

这段代码可以很好地记录到控制台,但是没有任何东西记录到文件中。文件已创建,但从未写入任何内容。我试过关闭处理器,但那没用。冲洗也不行。我在网上搜索过,但显然只有我有这个问题。有人知道问题出在哪里吗?谢谢你的回答。


Tags: 文件代码debuglogaddserverformatterlogging
3条回答

尝试将导入和basicConfig放在脚本的开头。像这样的:

import logging
logging.basicConfig(filename='log.log', level=logging.INFO)
.
.
import ...
import ...

试着打电话

logger.error('This should go to both console and file')

而不是

logging.error('this will go to the default logger which you have not changed the config of')

把这个

for handler in logging.root.handlers[:]:
    logging.root.removeHandler(handler)

logging.basicConfig(...)

另见 Logging module not writing to file

相关问题 更多 >