¿Dónde escribe QGIS sus mensajes de registro de error?

33

Quiero leer y copiar el registro de errores de los bloqueos que estoy experimentando en QGIS 2.0. El error que recibo congela QGIS, así que tengo que ctrl-alt-del. Puedo ver el último mensaje en el panel, pero no puedo copiarlo ni retroceder para ver los mensajes anteriores. Cuando lo vuelvo a abrir, el panel de mensajes de registro se ha restablecido a cero (inicio QGIS, etc.), por lo que todos los mensajes de error de transformación que quiero desaparecen.

¿Los mensajes de registro anteriores se escriben en el disco en alguna parte?

IanS
fuente

Respuestas:

31

QGIS no escribe sus mensajes de registro en un archivo de forma predeterminada.

Si tiene una compilación de depuración (normalmente los nightlies son), se escriben en stdout. Eso significa que si lo ejecuta en un terminal en Linux, verá los mensajes allí. En Windows, creo que hay una herramienta llamada Herramientas de depuración para Windows o similar que puede interceptar los mensajes.

Una alternativa es utilizar algunas secuencias de comandos de Python mínimas. Cada mensaje se emite como una señal Qt. Por lo tanto, podemos conectarnos a estas señales y escribirlas en un archivo. Simplemente copie el siguiente comando a su consola Python

Para 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 para 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)

Cuando ejecute este código, se escribirá en la salida /tmp/qgis.log.

Matthias Kuhn
fuente
Debe haber una línea en blanco entre el final de la definición de la función y la línea final para que la consola de Python esté contenta con copiar / pegar
raphael
21

Si bien esto no ayudará con este problema en particular, si solo desea ver los registros durante el tiempo de ejecución (es decir, QGIS no se bloquea), puede habilitar el panel Mensajes de registro.

En QGIS Vaya a: Ver> Paneles> Mensajes de registro

Asegúrese de que la casilla esté marcada.

michaeltomiak
fuente
9
Por favor lea la pregunta una vez más.
Stefan
¿Cómo recuperas las pestañas en el panel de mensajes de registro si pierdes un par?
user32882
+1 ya que esta es la respuesta correcta. Sin embargo, el comentario sobre la comunidad Stackexchange está fuera de línea.
Grzegorz Oledzki
8

Procesamiento => Opciones

Debe verificar esto: 'Mantener el diálogo abierto después de ejecutar un algoritmo'

después de eso puedes copiar más allá del registro de errores

ingrese la descripción de la imagen aquí

elmo
fuente
1

Puede sonar obvio, pero he encontrado útil hacer que el cuadro de mensajes QGIS sea un diálogo flotante para que pueda extenderlo de arriba a abajo de su pantalla. Esto le permitiría ver e imprimir más mensajes en pantalla cuando QGIS falla. Lo siento, no sé dónde QGIS escribe estos mensajes.

AMK
fuente