Onde o QGIS grava suas mensagens de log de erros?

33

Desejo ler e copiar o log de erros das falhas que estou enfrentando no QGIS 2.0. O erro que eu estou recebendo congela o QGIS, então eu tenho que ctrl-alt-del. Consigo ver a última mensagem no painel, mas não consigo copiá-la ou retroceder para ver as mensagens anteriores. Ao reabri-lo, o painel de mensagens de log foi redefinido para zero (QGIS iniciando etc.), portanto, todas as mensagens de erro de transformação que eu quero desapareceram.

As mensagens de log mais antigas são gravadas no disco em algum lugar?

IanS
fonte

Respostas:

31

O QGIS não grava suas mensagens de log em um arquivo por padrão.

Se você tem uma compilação de depuração (as diárias são normalmente), elas são gravadas no stdout. Isso significa que, se você executá-lo em um terminal no linux, verá as mensagens lá. No Windows, acho que existe uma ferramenta chamada Debugging Tools for Windows ou similar que pode interceptar as mensagens.

Uma alternativa é usar alguns scripts python mínimos. Toda mensagem é emitida como um sinal Qt. Portanto, podemos nos conectar a esses sinais e gravá-los em um arquivo. Simplesmente copie o seguinte comando no seu console python

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

Ou para o 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 você executa esse código, a saída será gravada em /tmp/qgis.log.

Matthias Kuhn
fonte
Deve haver uma linha em branco entre o final da definição da função e a linha final para o console Python para ser feliz com o copiar / colar
raphael
21

Embora isso não ajude com esse problema específico, se você quiser apenas ver os logs durante o tempo de execução (por exemplo, o QGIS não está travando), é possível ativar o painel Mensagens de log.

No QGIS, acesse: Exibir> Painéis> Mensagens de Log

Verifique se a caixa está marcada.

michaeltomiak
fonte
9
Por favor, leia a pergunta mais uma vez.
Stefan
Como você recupera as guias no painel de mensagens de log se perde algumas?
user32882
+1, pois esta é a resposta correta. O comentário sobre a comunidade Stackexchange está fora de linha.
Grzegorz Oledzki 6/03
8

Processamento => Opções

Você precisa verificar o seguinte: 'Manter a caixa de diálogo aberta depois de executar um algoritmo'

Depois disso, você pode copiar além do log de erros

insira a descrição da imagem aqui

elmo
fonte
1

Pode parecer óbvio, mas achei útil tornar a caixa de mensagens QGIS um diálogo flutuante para que você possa estendê-lo de cima para baixo na tela. Isso permitiria ver e imprimir mais mensagens na tela quando o QGIS travar. Desculpe, não sei onde o QGIS grava essas mensagens.

AMK
fonte