Di mana QGIS menulis pesan log kesalahannya?

33

Saya ingin membaca dan menyalin log kesalahan untuk crash yang saya alami di QGIS 2.0. Kesalahan saya mendapatkan QGIS jadi saya harus ctrl-alt-del. Saya bisa melihat pesan terakhir di panel, tetapi tidak bisa menyalinnya atau gulir kembali untuk melihat pesan sebelumnya. Ketika saya membukanya kembali, panel pesan log telah diatur ulang ke nol (mulai QGIS, dll), sehingga semua pesan kesalahan transformasi yang saya inginkan hilang.

Apakah pesan log lama ditulis ke disk di suatu tempat?

Ian
sumber

Jawaban:

31

QGIS tidak menulis pesan log-nya ke file secara default.

Jika Anda memiliki build debug (biasanya nightlies) mereka ditulis ke stdout. Itu berarti bahwa jika Anda menjalankannya di terminal di linux Anda akan melihat pesan di sana. Pada Windows saya pikir ada alat yang disebut Debugging Tools untuk Windows atau sejenisnya yang dapat mencegat pesan.

Alternatifnya adalah dengan menggunakan beberapa skrip python minimal. Setiap pesan dipancarkan sebagai sinyal Qt. Karena itu kita dapat terhubung ke sinyal-sinyal ini dan menulisnya ke file. Cukup salin perintah berikut ke konsol python Anda

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

Atau untuk 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)

Ketika Anda menjalankan kode ini, output akan ditulis ke /tmp/qgis.log.

Matthias Kuhn
sumber
Seharusnya ada garis kosong antara akhir definisi fungsi dan baris terakhir agar konsol Python puas dengan salin / tempel
raphael
21

Meskipun ini tidak akan membantu dengan masalah khusus ini, jika Anda hanya ingin melihat log selama runtime (yaitu QGIS tidak mogok), Anda dapat mengaktifkan panel Pesan Log.

Di QGIS, Pergi ke: Lihat> Panel> Log Pesan

Pastikan kotak dicentang.

michaeltomiak
sumber
9
Silakan baca pertanyaan sekali lagi.
Stefan
Bagaimana Anda mendapatkan kembali tab di panel pesan log jika Anda kehilangan pasangan?
user32882
Memberi +1 karena ini adalah jawaban yang benar. Namun komentar tentang komunitas Stackexchange tidak sesuai.
Grzegorz Oledzki
8

Memproses => Opsi

Anda perlu memeriksa ini: 'Biarkan dialog tetap terbuka setelah menjalankan algoritma'

setelah itu Anda dapat menyalin melewati log kesalahan

masukkan deskripsi gambar di sini

Elmo
sumber
1

Mungkin terdengar jelas, tetapi saya merasa bermanfaat untuk menjadikan kotak pesan QGIS dialog apung sehingga Anda dapat memperluasnya dari atas ke bawah layar Anda. Ini akan memungkinkan Anda untuk melihat dan mencetak layar lebih banyak pesan ketika QGIS lumpuh. Maaf, saya tidak tahu di mana QGIS menulis pesan ini.

AMK
sumber