Gdzie QGIS zapisuje komunikaty w dzienniku błędów?


33

Chcę przeczytać i skopiować plik dziennika błędów w przypadku awarii występujących w QGIS 2.0. Błąd, który pojawia się, powoduje zawieszenie się QGIS, więc muszę ctrl-alt-del. Widzę ostatnią wiadomość w panelu, ale nie mogę jej skopiować ani przewinąć do tyłu, aby zobaczyć wcześniejsze wiadomości. Po ponownym otwarciu panel komunikatów dziennika został zresetowany do zera (uruchomienie QGIS itp.), Więc wszystkie komunikaty o błędach transformacji, których chcę, zniknęły.

Czy starsze komunikaty dziennika są gdzieś zapisywane na dysku?

Odpowiedzi:


31

QGIS domyślnie nie zapisuje komunikatów do pliku.

Jeśli masz wersję do debugowania (zwykle są to nightlies), są one zapisywane na standardowe wyjście. Oznacza to, że jeśli uruchomisz go w terminalu na systemie Linux, zobaczysz tam wiadomości. W systemie Windows myślę, że istnieje narzędzie o nazwie Narzędzia do debugowania dla systemu Windows lub podobne, które może przechwytywać wiadomości.

Alternatywą jest użycie minimalnego skryptu w języku Python. Każda wiadomość jest emitowana jako sygnał Qt. Dlatego możemy połączyć się z tymi sygnałami i zapisać je w pliku. Po prostu skopiuj następujące polecenie do konsoli Pythona

W przypadku 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)

Lub w przypadku 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)

Po uruchomieniu tego kodu dane wyjściowe zostaną zapisane /tmp/qgis.log.


Pomiędzy końcem definicji funkcji a ostatnim wierszem powinna znajdować się pusta linia, aby konsola Python była zadowolona z kopiowania / wklejania
raphael

21

Chociaż nie pomoże to w rozwiązaniu tego konkretnego problemu, jeśli chcesz tylko wyświetlać dzienniki w czasie wykonywania (tj. QGIS nie ulega awarii), możesz włączyć panel Wiadomości w dzienniku.

W QGIS przejdź do: Widok> Panele> Loguj wiadomości

Upewnij się, że pole jest zaznaczone.


9
Przeczytaj pytanie jeszcze raz.
Stefan,

Jak odzyskać zakładki w panelu komunikatów dziennika, jeśli zgubisz parę?
user32882

+1, ponieważ jest to poprawna odpowiedź. Komentarz na temat społeczności Stackexchange jest jednak nie na temat.
Grzegorz Oledzki

8

Przetwarzanie => Opcje

Musisz to zaznaczyć: „Zachowaj otwarte okno dialogowe po uruchomieniu algorytmu”

po tym możesz skopiować obok dziennika błędów

wprowadź opis zdjęcia tutaj


1

Może to zabrzmi oczywisto, ale uznałem za użyteczne, aby okno QGIS było swobodnym oknem dialogowym, dzięki czemu można go rozciągać od góry do dołu ekranu. Umożliwiłoby to wyświetlanie i drukowanie kolejnych komunikatów po awarii QGIS. Niestety nie wiem, gdzie QGIS zapisuje te wiadomości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.