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

时间:2014-08-18 10:03:21

标签: logging ipython ipython-notebook

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

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

4 个答案:

答案 0 :(得分:9)

红色背景突出显示发送到stderr而不是stdout的输出。为避免这种情况,您可以将日志记录发送到stdout:

ch = logging.StreamHandler(sys.stdout)

答案 1 :(得分:1)

突出显示的答案对我不起作用。 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")

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

答案 2 :(得分:0)

这是因为日志记录已记录到stderr

如果安装了Stylus浏览器插件,则可以更改CSS样式以使用其他颜色。

.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
    background: var(--jp-cell-editor-background);
}

这有帮助吗?

答案 3 :(得分:0)

这个片段对我有用。我讨厌红色背景,希望它有另一种颜色。 在这里,我将背景颜色更改为绿色,但您可以将 CSS 设置为任何您想要的:

from IPython.core.display import HTML
HTML("""
<style>
div.output_stderr {
    background: #0C0;
}
</style>
""")
相关问题