QGIS अपनी त्रुटि लॉग संदेश कहां लिखता है?


33

मैं QGIS 2.0 में जिन दुर्घटनाओं का सामना कर रहा हूं, उनके लिए मैं त्रुटि लॉग को पढ़ना और कॉपी करना चाहता हूं। त्रुटि मुझे QGIS से मिल रही है इसलिए मुझे ctrl-alt-del करना है। मैं पैनल में अंतिम संदेश देख सकता हूं, लेकिन इसे कॉपी नहीं कर सकता या पहले के संदेशों को देखने के लिए वापस स्क्रॉल नहीं कर सकता। जब मैं इसे फिर से खोलता हूं, तो लॉग संदेश पैनल शून्य (QGIS शुरू, आदि) पर रीसेट हो जाता है, इसलिए मेरे द्वारा वांछित सभी परिवर्तन त्रुटि संदेश चले गए हैं।

क्या पुराने लॉग संदेश कहीं डिस्क पर लिखे गए हैं?

जवाबों:


31

QGIS डिफ़ॉल्ट रूप से किसी फ़ाइल में अपने लॉग संदेश नहीं लिखता है।

यदि आपके पास एक डीबग बिल्ड (सामान्य रूप से नाइटलाइज़ हैं) तो उन्हें stdout को लिखा जाता है। इसका मतलब है कि यदि आप इसे लिनक्स पर एक टर्मिनल में चलाते हैं तो आपको वहां संदेश दिखाई देंगे। विंडोज पर मुझे लगता है कि विंडोज के लिए डिबगिंग टूल या ऐसा ही एक टूल है जो संदेशों को इंटरसेप्ट कर सकता है।

एक विकल्प कुछ न्यूनतम अजगर स्क्रिप्टिंग का उपयोग करना है। प्रत्येक संदेश Qt सिग्नल के रूप में उत्सर्जित होता है। इसलिए हम इन संकेतों से जुड़ सकते हैं और उन्हें एक फ़ाइल में लिख सकते हैं। बस अपने python कंसोल में निम्न कमांड कॉपी करें

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)

या 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)

जब आप इस कोड को चलाते हैं, तो आउटपुट को लिखा जाएगा /tmp/qgis.log


फ़ंक्शन परिभाषा के अंत और पायथन कंसोल के लिए अंतिम पंक्ति के बीच एक रिक्त रेखा होनी चाहिए जो कॉपी / पेस्ट से खुश हो
राफेल

21

हालांकि यह इस विशेष समस्या के साथ मदद नहीं करेगा, अगर आप रनटाइम के दौरान लॉग देखना चाहते हैं (यानी QGIS दुर्घटनाग्रस्त नहीं है ), तो आप लॉग संदेश पैनल को सक्षम कर सकते हैं।

QGIS में जाएं: देखें> पैनलों> लॉग संदेश

सुनिश्चित करें कि बॉक्स चेक किया गया है।


9
कृपया प्रश्न को एक बार पढ़ें।
स्टीफन

यदि आप एक जोड़े को खो देते हैं तो आपको लॉग संदेश पैनल में टैब कैसे वापस मिलेंगे?
user32882

+1 यह सही उत्तर है। Stackexchange समुदाय के बारे में टिप्पणी यद्यपि लाइन से बाहर है।
ग्रेजेगॉर्ज ओलेदज़की

8

प्रसंस्करण => विकल्प

आपको यह जांचने की आवश्यकता है: 'एल्गोरिथ्म चलाने के बाद संवाद खुला रखें'

उसके बाद आप त्रुटि लॉग के पिछले कॉपी कर सकते हैं

यहां छवि विवरण दर्ज करें


1

स्पष्ट लग सकता है, लेकिन मैंने QGIS संदेश बॉक्स को एक अस्थायी संवाद बनाने के लिए उपयोगी पाया है ताकि आप इसे अपनी स्क्रीन के ऊपर से नीचे तक बढ़ा सकें। यह आपको QGIS के क्रैश होने पर अधिक संदेश देखने और प्रिंट करने की अनुमति देगा। क्षमा करें, मुझे नहीं पता कि QGIS इन संदेशों को कहाँ लिखता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.