我想读取并复制错误日志,以记录我在QGIS 2.0中遇到的崩溃。我遇到的错误冻结了QGIS,因此我必须按ctrl-alt-del。我可以在面板中看到最后一条消息,但是无法复制或滚动回以查看较早的消息。当我重新打开它时,日志消息面板已重置为零(QGIS正在启动,等等),因此我想要的所有转换错误消息都消失了。

旧的日志消息是否写入磁盘的某个地方?

#1 楼

QGIS默认情况下不会将其日志消息写入文件。

如果您具有调试版本(通常是每晚,则将它们写入stdout)。这意味着,如果您在Linux上的终端中运行它,则将在其中看到消息。在Windows上,我认为有一个名为Debugging Tools for Windows或类似工具的工具可以拦截消息。

替代方法是使用一些最少的python脚本。每个消息都作为Qt信号发出。因此,我们可以连接到这些信号并将它们写入文件。只需将以下命令复制到python控制台

对于QGIS 3:

 filename = '/tmp/qgis.log'

def write_log_message(message, tag, level):
    with open(filename, 'a') as logfile:
        logfile.write('{tag}({level}): {message}'.format(tag=tag, level=level, message=message))

QgsApplication.messageLog().messageReceived.connect(write_log_message)
 



或对于QGIS 2:

 filename = '/tmp/qgis.log'

def write_log_message(message, tag, level):
    with open(filename, 'a') as logfile:
        logfile.write('{tag}({level}): {message}'.format(tag=tag, level=level, message=message))

QgsMessageLog.instance().messageReceived.connect(write_log_message)
 


当您运行此代码,输出将被写入/tmp/qgis.log

评论


函数定义的末尾与Python控制台的最后一行之间应该有一个空白行,以便对复制/粘贴感到满意

–拉斐尔
17年1月13日在17:29

#2 楼

尽管这对解决特定问题没有帮助,但是如果您只想在运行时查看日志(即QGIS不会崩溃),则可以启用“日志消息”面板。

在QGIS中,请转到:查看>面板>日志消息

确保选中此框。

评论


请再读一次这个问题。

– Stefan
2015年10月6日在10:01



如果您输了几对,如何返回日志消息面板中的选项卡?

–user32882
18-09-4在8:52

+1,因为这是正确的答案。但是,关于Stackexchange社区的评论与众不同。

–Grzegorz Oledzki
19 Mar 6 '19 at 20:42



@GrzegorzOledzki不,该问题明确询问了持久日志。日志消息仅显示该运行时期间的消息。

–inc42
20 Jan 5 '20 at 13:42

#3 楼

处理=>选项

您需要检查以下内容:“运行算法后保持对话框打开”

之后,您可以复制过去的错误日志


#4 楼

听起来似乎很明显,但是我发现使QGIS消息框成为浮动对话框很有用,这样您就可以将其从屏幕的顶部扩展到底部。当QGIS崩溃时,这将使您能够查看和打印更多消息。抱歉,我不知道QGIS在哪里写这些消息。