Де QGIS пише свої журнали помилок?


33

Я хочу прочитати та скопіювати журнал помилок для збоїв, які виникають у QGIS 2.0. Помилка, яку я отримую, заморожує QGIS, тому мені доведеться ctrl-alt-del. Я бачу останнє повідомлення на панелі, але не можу його скопіювати або прокрутити назад, щоб переглянути попередні повідомлення. Коли я повторно відкриваю її, панель повідомлень журналу повертається до нуля (запуск QGIS тощо), тому всі повідомлення про помилки трансформації, які я хочу, відпали.

Чи десь записані старі повідомлення журналу на диск?

Відповіді:


31

QGIS не записує свої журнальні повідомлення у файл за замовчуванням.

Якщо у вас є збірка налагодження (зазвичай існують солянки), вони записуються в stdout. Це означає, що якщо запустити його в терміналі на Linux, ви побачите там повідомлення. У Windows я думаю, що є інструмент під назвою Налагодження інструментів для Windows або подібний, який може перехоплювати повідомлення.

Альтернативою є використання деяких мінімальних сценаріїв пітона. Кожне повідомлення випромінюється як сигнал 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 має бути порожній рядок, щоб задовольнити копію / вставити
raphael

21

Хоча це не допоможе з цією конкретною проблемою, якщо ви просто хочете бачити журнали під час виконання (тобто QGIS не виходить з ладу), ви можете включити панель повідомлень журналу.

У QGIS Перейдіть до: Перегляд> Панелі> Повідомлення журналу

Переконайтесь, що прапорець встановлений.


9
Прочитайте питання ще раз.
Стефан

Як повернути вкладки на панелі повідомлень журналу, якщо ви втратите пару?
user32882

+1, оскільки це правильна відповідь. Коментар про спільноту Stackexchange не відповідає лінії
Гжегож Оледзкі

8

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

Вам потрібно перевірити це: "Тримайте діалогове вікно відкритим після запуску алгоритму"

після цього ви можете скопіювати минулий журнал помилок

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


1

Можливо, це звучить очевидно, але я вважаю корисним зробити поле QGIS з повідомленням плаваючим діалогом, щоб ви могли розширити його зверху вниз на екрані. Це дозволить вам бачити та друкувати на екрані більше повідомлень при збої QGIS. Вибачте, я не знаю, куди QGIS пише ці повідомлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.