Python 2.7 当通过IPython笔记本运行时,python日志默认存储在哪里?

Python 2.7 当通过IPython笔记本运行时,python日志默认存储在哪里?,python-2.7,ipython-notebook,Python 2.7,Ipython Notebook,我在一个IPython笔记本电池中写道: import logging logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) handler = logging.FileHandler('model.log') handler.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(name)s - %(leve

我在一个IPython笔记本电池中写道:

import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
handler = logging.FileHandler('model.log')
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
请注意,我提供的是文件名,但不是路径


我在哪里能找到那根日志?(运行了“查找”,但找不到它…

有多种方法可以设置IPython工作目录。如果您没有在IPython概要文件/配置、环境或笔记本中设置这些内容,那么日志应该在您的工作目录中。还可以尝试
$ipython locate
打印默认的ipython目录路径,日志可能在那里

给它一个绝对文件路径,看看它是否能工作,怎么样

除此之外,调用
logging.basicConfig
似乎在IPython笔记本中没有任何作用:

# In:
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger()
logger.debug('root debug test')
没有输出

根据文档,如果根记录器已经为其配置了处理程序,则不会执行任何操作。似乎是这样,IPython显然已经设置了根记录器。我们可以确认:

# In:
import logging
logger = logging.getLogger()
logger.handlers

# Out:
[<logging.StreamHandler at 0x106fa19d0>]
在笔记本中生成格式化输出:

# In:
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger()
logger.debug('root debug test')

现在开始设置文件记录器:

# In:
import logging

# set root logger level
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)

# setup custom logger
logger = logging.getLogger(__name__)
handler = logging.FileHandler('model.log')
handler.setLevel(logging.INFO)
logger.addHandler(handler)

# log
logger.info('test info my')
这将导致将输出写入notebook和model.log文件,对我来说,该文件位于我启动IPython和notebook的目录中


请注意,在不重新启动IPython内核的情况下重复调用这段代码将导致在每次运行时创建另一个处理程序并将其附加到记录器,并且每次日志调用记录到该文件的消息数将增加。

在basicConfig中声明日志文件的路径,如下所示:

log_file_path = "/your/path/"
logging.basicConfig(level   =   logging.DEBUG,
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                    filename    =   log_file_path,
                    filemode    =   'w')
然后可以开始记录日志,如果需要,为什么不向控制台添加不同的日志格式:

# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger().addHandler(console)
logger = logging.getLogger()

等一下。

@user2808117-Humm,它应该在那里,或者在当前的工作目录中,也就是你开始使用笔记本的那个目录中。您是否使用IPython配置文件/配置并设置
c.NotebookManager.notebook\u dir
c.FileNotebookManager.notebook\u dir
c.NotebookApp.notebook\u dir
?我有配置文件,但未配置该属性。是否由于某种原因,在这种情况下不会创建日志文件?(我在根目录上用sudo运行了一个'find',但找不到该文件)@user2808117我知道,对我来说,在当前工作目录中创建了一个空文件get,代码与您提供的完全相同。但是您的日志记录配置似乎有点不正确,例如,您创建了一个处理程序,但没有将其分配给日志记录程序。您希望通过日志设置实现什么?抱歉,我正在分配处理程序,只是将代码剪切到更多(现在已更新)。不确定问题出在哪里,将我的代码与您提供的代码进行了切换,结果正常。。。