当我在IPython笔记本中运行以下命令时,我看不到任何输出:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("test")
谁知道怎么做,这样我就能看到笔记本里的“测试”信息了?
发布于 2014-01-31 16:17:31
如果您仍然希望使用basicConfig
,请像这样重新加载日志记录模块
from importlib import reload # Not needed in Python 2
import logging
reload(logging)
logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s', level=logging.DEBUG, datefmt='%I:%M:%S')
发布于 2015-01-28 22:56:38
我的理解是,IPython会话会启动日志记录,因此basicConfig无法工作。以下是对我有效的设置(我希望这看起来不是那么难看,因为我想在几乎所有的笔记本上都使用它):
import logging
logger = logging.getLogger()
fhandler = logging.FileHandler(filename='mylog.log', mode='a')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fhandler.setFormatter(formatter)
logger.addHandler(fhandler)
logger.setLevel(logging.DEBUG)
现在,当我运行时:
logging.error('hello!')
logging.debug('This is a debug message')
logging.info('this is an info message')
logging.warning('tbllalfhldfhd, warning.')
我在我的笔记本所在的目录中得到了一个"mylog.log“文件,其中包含:
2015-01-28 09:49:25,026 - root - ERROR - hello!
2015-01-28 09:49:25,028 - root - DEBUG - This is a debug message
2015-01-28 09:49:25,029 - root - INFO - this is an info message
2015-01-28 09:49:25,032 - root - WARNING - tbllalfhldfhd, warning.
请注意,如果在未重新启动IPython会话的情况下重新运行此命令,则会将重复的条目写入文件,因为现在将定义两个文件处理程序
发布于 2016-12-09 20:10:42
请记住,stderr是logging
模块的默认流,因此在IPython和Jupyter笔记本中,除非将流配置为stdout,否则您可能看不到任何内容:
import logging
import sys
logging.basicConfig(format='%(asctime)s | %(levelname)s : %(message)s',
level=logging.INFO, stream=sys.stdout)
logging.info('Hello world!')
https://stackoverflow.com/questions/18786912
复制相似问题