避免在Ipython Notebook中记录输出的红色背景颜色

bjo*_*nen 11 logging ipython ipython-notebook

当笔记本打印日志输出时,是否可以避免红色背景颜色?有关示例,请参阅此示例笔记本.

http://nbviewer.ipython.org/gist/bjonen/1bd52a7d8a4761a74074

Tho*_*s K 9

红色背景突出显示发送到stderr的输出而不是stdout.要避免它,您可以将您的日志记录发送到stdout:

ch = logging.StreamHandler(sys.stdout)
Run Code Online (Sandbox Code Playgroud)

  • 如果使用`logging.basicConfig`设置日志记录,还可以传递`stream = sys.stdout`. (2认同)
  • 如果您像我一样希望*所有级别低于 ERROR* 的日志消息都没有红色背景,并且 **ERROR 和 CRITICAL 日志消息仍应具有红色背景**,那么您可能还会发现这个有用:https://gist.github.com/joshbode/58fac7ababc700f51e2a9ecdebe563ad。您可能需要将“Fore.Red”调整为“Back.Red”,其他原木颜色也类似。 (2认同)

Ale*_*lex 7

突出显示的答案对我不起作用。Jupyter Notebook 似乎在完成任何导入之前设置记录器。要将任何 stderr 重定向到 stdout,我必须首先重新加载日志记录模块:

import sys
import logging
from importlib import reload
reload(logging)

logging.basicConfig(stream=sys.stdout, format='',
                level=logging.INFO, datefmt=None)
log = logging.getLogger(__name__)
log.info("This should print as normal output in Jupyter, and not in a red box")
Run Code Online (Sandbox Code Playgroud)

这也可以包含在导入到 Jupyter Notebook 的包中,例如使用import my_dev_package- 并防止 log.Info 显示为红色框。要仅在包的 Jupyter 模式(而不是控制台)下运行此程序,请添加检查:if not type(sys.stdout) == io.TextIOWrapper: # Jupyter Mode