49 votos

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

Quiero leer y copiar el registro de errores de los bloqueos que estoy experimentando en QGIS 2.0. El error que estoy recibiendo congela QGIS por lo que tengo que ctrl-alt-suprimir. Puedo ver el último mensaje en el panel, pero no puedo copiarlo ni desplazarme hacia atrás para ver los mensajes anteriores. Cuando vuelvo a abrirlo, el panel de mensajes de registro se ha puesto a cero (inicio de QGIS, etc), por lo que todos los mensajes de error de transformación que quiero han desaparecido.

¿Los mensajes de registro más antiguos se escriben en algún lugar del disco?

45voto

Michael Puntos 11

QGIS no escribe sus mensajes de registro en un archivo por defecto.

Si tienes una compilación de depuración (los nightlies normalmente lo son) se escriben en stdout. Eso significa que si lo ejecutas en un terminal en linux verás los mensajes allí. En Windows creo que hay una herramienta llamada Debugging Tools for Windows o similar que puede interceptar los mensajes.

Una alternativa es utilizar algunos scripts mínimos de python. 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 en su consola de 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)

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

0 votos

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 el copiar/pegar

29voto

Vincent Puntos 144

Aunque esto no ayudará con este problema en particular, si sólo quiere ver los registros durante el tiempo de ejecución (es decir, QGIS es no que se bloquea), puede activar el panel de mensajes de registro.

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

Asegúrese de que la casilla está marcada.

11 votos

Por favor, lea la pregunta una vez más.

2 votos

¿Cómo se recuperan las pestañas del panel de mensajes de registro si se pierden un par de ellas?

0 votos

+1 ya que esta es la respuesta correcta. Sin embargo, el comentario sobre la comunidad Stackexchange está fuera de lugar.

9voto

ILoveFortran Puntos 1670

Procesamiento => Opciones

Tienes que marcar esto : 'Mantener el diálogo abierto después de ejecutar un algoritmo'

después de eso puede copiar el registro de errores

enter image description here

1voto

Ryan Cavanaugh Puntos 138

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X