Dove scrive QGIS i suoi messaggi del registro errori?


33

Voglio leggere e copiare il registro degli errori per gli arresti anomali che sto riscontrando in QGIS 2.0. L'errore che sto ricevendo congela QGIS, quindi devo ctrl-alt-del. Posso vedere l'ultimo messaggio nel pannello, ma non riesco a copiarlo o scorrere indietro per vedere i messaggi precedenti. Quando lo riapro, il pannello dei messaggi di registro si è reimpostato su zero (avvio QGIS, ecc.), Quindi tutti i messaggi di errore di trasformazione che voglio sono spariti.

I vecchi messaggi di registro sono scritti sul disco da qualche parte?

Risposte:


31

QGIS non scrive i suoi messaggi di registro in un file per impostazione predefinita.

Se hai una build di debug (normalmente i nightly) vengono scritti su stdout. Ciò significa che se lo esegui in un terminale su Linux vedrai i messaggi lì. Su Windows penso che esista uno strumento chiamato Debugging Tools per Windows o simili che può intercettare i messaggi.

Un'alternativa è quella di utilizzare alcuni script Python minimi. Ogni messaggio viene emesso come segnale Qt. Quindi possiamo collegarci a questi segnali e scriverli in un file. Copia semplicemente il seguente comando sulla tua console Python

Per 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)

O per 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)

Quando si esegue questo codice, l'output verrà scritto in /tmp/qgis.log.


Dovrebbe esserci una riga vuota tra la fine della definizione della funzione e la riga finale affinché la console Python sia soddisfatta della copia / incolla
raphael

21

Anche se questo non aiuta con questo particolare problema, se vuoi solo vedere i log durante il runtime (cioè QGIS non si arresta in modo anomalo), puoi abilitare il pannello Messaggi di log.

In QGIS Vai a: Visualizza> Pannelli> Registra messaggi

Assicurati che la casella sia selezionata.


9
Si prega di leggere la domanda ancora una volta.
Stefan,

Come si recuperano le schede nel pannello dei messaggi di registro se si perde un paio?
user32882

+1 poiché questa è la risposta corretta. Il commento sulla comunità Stackexchange è fuori linea però.
Grzegorz Oledzki il

8

Elaborazione => Opzioni

È necessario controllare questo: 'Mantieni la finestra di dialogo aperta dopo aver eseguito un algoritmo'

successivamente è possibile copiare oltre il registro degli errori

inserisci qui la descrizione dell'immagine


1

Potrebbe sembrare ovvio, ma ho trovato utile rendere la finestra dei messaggi di QGIS un dialogo fluttuante in modo da poterlo estendere dall'alto verso il basso dello schermo. Ciò consentirebbe di visualizzare e stampare più messaggi sullo schermo in caso di arresto anomalo di QGIS. Spiacenti, non so dove QGIS scriva questi messaggi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.