Где QGIS записывает свои сообщения в журнал ошибок?

33

Я хочу прочитать и скопировать журнал ошибок для сбоев, которые я испытываю в QGIS 2.0. Ошибка, которую я получаю, зависает QGIS, поэтому я должен ctrl-alt-del. Я вижу последнее сообщение на панели, но не могу скопировать его или прокрутить назад, чтобы увидеть предыдущие сообщения. Когда я снова открываю его, панель сообщений журнала обнуляется (запуск QGIS и т. Д.), Поэтому все нужные мне сообщения об ошибках преобразования исчезли.

Старые сообщения журнала записаны на диск где-нибудь?

Ians
источник

Ответы:

31

QGIS по умолчанию не записывает свои сообщения журнала в файл.

Если у вас есть отладочная сборка (обычно есть ночные), они записываются в стандартный вывод. Это означает, что если вы запустите его в терминале Linux, вы увидите там сообщения. В Windows я думаю, что есть инструмент под названием «Средства отладки» для 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 , чтобы быть счастливым с копией / вставить
Рафаил
21

Хотя это не поможет решить эту конкретную проблему, если вы просто хотите просматривать журналы во время выполнения (т. Е. QGIS не падает), вы можете включить панель «Сообщения журнала».

В QGIS перейдите в: Вид> Панели> Журналы сообщений.

Убедитесь, что флажок установлен.

michaeltomiak
источник
9
Пожалуйста, прочитайте вопрос еще раз.
Стефан
Как вы получаете обратно вкладки в панели сообщений журнала, если вы потеряли пару?
user32882
+1, так как это правильный ответ. Комментарий о сообществе Stackexchange не соответствует действительности.
Гжегож Оледзки
8

Обработка => Параметры

Вы должны проверить это: «Держите диалог открытым после запуска алгоритма»

после этого вы можете скопировать мимо журнала ошибок

введите описание изображения здесь

Elmo
источник
1

Может показаться очевидным, но я нашел полезным сделать окно сообщений QGIS плавающим диалогом, чтобы вы могли расширять его сверху вниз на экране. Это позволит вам видеть и распечатывать больше сообщений на экране при сбое QGIS. Извините, я не знаю, где QGIS пишет эти сообщения.

АМК
источник