के साथ लॉग इन करना मैं वैला प्रोग्रामिंग के लिए नया हूं और जावा और .NET के साथ अनुभव है, फिर भी मैं वाला के साथ लॉग इन करने के तरीके पर कुछ भी उपयोगी नहीं पाया है। क्या लॉग 4j या log4net जैसी कोई उपयोगी लॉगिंग सुविधा है या त्रुटि, चेतावनी, डीबग और ट्रेस जैसे कई लॉगिंग स्तरों में स्केलिंग के साथ वैला में लॉग इन करने का सुझाया गया तरीका क्या है? और रक्षात्मक प्रोग्रामिंग जैसे कि आकलन और अनुबंध के बारे में क्या? क्या रक्षात्मक प्रोग्रामिंग करने के लिए कोई सुझाव दिया गया है और स्टैक निशान और सटीक मूल कारण के साथ सबसे उपयोगी लॉग प्राप्त करने के लिए क्या है? एक सलाह के लिए धन्यवाद।वैला
वैला
उत्तर
लॉगिंग
वाला काफी कुछ मजबूत लॉगिंग सुविधाओं में बनाया गया है। आप थोड़ा और अधिक जटिल log()
समारोह के लिए debug()
, message()
, warning()
, error()
, और critical()
के रूप में शॉर्टकट का उपयोग कर सकते हैं। सभी आधार में शामिल हैं (स्वचालित रूप से शामिल) GLib
namespace।
यदि आप लॉग आउटपुट को रीडायरेक्ट करना चाहते हैं या अलग-अलग स्थानों पर विभिन्न प्रकार के संदेश भेजना चाहते हैं, तो आपको जो कुछ भी चाहिए वह GLib.Log
namespace में है। दृश्यों के पीछे क्या हो रहा है इसके लिए आप glib docs on logging पढ़ना चाहेंगे।
रक्षात्मक प्रोग्रामिंग
वाला भी दावे और अनुबंधों के लिए समर्थन शामिल है। संक्षिप्त संस्करण: assert()
और assert_not_reached()
दावे के लिए, और requires()
और ensures()
अनुबंधों के लिए विधि हस्ताक्षर में। अधिक जानकारी के लिए Assertions and Contract Programming पर ट्यूटोरियल अनुभाग देखें।
त्रुटि हैंडलिंग
वाला की त्रुटि से निपटने के लिए थोड़ा अजीब है: समान दिखने वाले अपवाद है, लेकिन से भिन्न। Error Handling पर ट्यूटोरियल अनुभाग मूलभूत रूप से अच्छी तरह से कवर करता है, और फिर दृश्यों के पीछे क्या हो रहा है, इसकी एक और अधिक उन्नत समझ प्राप्त करने के लिए glib docs on errors पढ़ने में मददगार हो सकता है। जहां तक मुझे पता है, वैला त्रुटियों से स्टैक ट्रेस प्राप्त करने का कोई तरीका नहीं है - बस एक प्रकार और एक संदेश।
उत्तम आचरण
सर्वोत्तम प्रथाओं के संदर्भ में, मुझे लगता है कि वाला जावा के लिए पर्याप्त समान है या सी # कि प्रथाओं आप पहले से ही जानते हैं कि एक सामान्य अर्थ में लागू किया जा सकता। मैं सुझाव देता हूं कि वाल्वा में विनिर्देशों को कैसे देखें, इस बारे में एक महसूस करने के लिए इन सुविधाओं के साथ खेलना। सौभाग्य!
@chazomaticus महान उत्तर के अतिरिक्त के रूप में, आप कॉल स्टैक को अनदेखा करके वाला से स्टैकट्रैक प्राप्त कर सकते हैं।
यह सिर्फ वैला भाषा में बेक नहीं है।
मैं लिखा है के लिए हो इस तरह के एक पुस्तकालय: ivy
मैं 2 बातें जवाब @chazomaticus में जोड़ने के लिए करना चाहते हैं:
मैं क्यों देखने के लिए सक्षम नहीं कर रहा हूँ कोई डीबग/लॉग आउटपुट?
आप वातावरण चर
G_MESSAGES_DEBUG
all
करने के लिए सेट करने के लिए है। दस्तावेज द्वारा भी उल्लेख किया गया है, लेकिन आगे समझाया नहीं गया है। जैसे debug के लिए:public static int main (string[] args) { // Use "G_MESSAGES_DEBUG=all ./test" to print debug messages! // Output: ``** (process:<PID>): DEBUG: <FILENAME>:<LINE>: my 10. debug message`` debug ("my %d. %s", 10, "debug message"); return 0; } valac --pkg glib-2.0 GLib.debug.vala G_MESSAGES_DEBUG=all ./GLib.debug ./GLib.debug
आप उत्पादन further restrict करना चाहते हैं, तो आप
error
,warning
,critical
,message
,info
,debug
औरhelp
बजायall
उपयोग कर सकते हैं।कहाँ मैं हर प्रवेश समारोह के लिए दस्तावेज़ मिल सकती है?
अतिरिक्त पठन:
- 1. वैला
- 2. एंड्रॉइड के लिए वैला?
- 3. पिजिन प्लगइन के लिए वैला
- 4. वैला: निर्भरता के आकार को कम करना
- 5. वैला (सी #-जैसी भाषा) सी को संकलित करता है?
- 6. गोला के बिना वैला का उपयोग किया जा सकता है?
- 7. वैला के साथ क्यूटी जीयूआई का उपयोग कैसे करें?
- 8. मैक पर वैला को कैसे इंस्टॉल करें इस पर निर्देश कहां मिल सकता है?
- 9. क्या वाला एक क्रॉस प्लेटफार्म भाषा है?
- 10. क्या मैं वाल में आईफोन के लिए कोड कर सकता हूं?
- 11. gtk.window हमेशा शीर्ष स्तर
- 12. चेतावनी की मरम्मत कैसे करें: प्रारंभकर्ता के आसपास लापता ब्रेसिज़?
- 13. क्या वाला सी ++ की तुलना में पार्स करने के लिए एक सेन भाषा है?
- 14. वाला वापी फाइलें प्रलेखन
करता वाला अनुबंध के उल्लंघन के लिए समर्थन कस्टम संदेश? या यह एक गुप्त डिफ़ॉल्ट त्रुटि संदेश देने जा रहा है? मैं त्रुटियों को फेंकने के लिए एक अच्छा तरीका खोजने की कोशिश कर रहा हूं और वैला ट्यूटोरियल के डिफ़ॉल्ट "त्रुटि हैंडलिंग"/"संविदात्मक प्रोग्रामिंग" अनुभाग वास्तव में उपयोगी कुछ भी वर्णन नहीं कर रहे हैं। – weberc2
ऐसा लगता है कि अनुबंधों को g_return_if_fail() पर कॉल में संकलित किया गया है, जो किसी भी कस्टम त्रुटि संदेश का समर्थन नहीं करता है। और आप सही हैं कि जेनरेट किए गए सी कोड से यह त्रुटि संदेश सबसे उपयोगी नहीं है। यदि आप अपने संदेशों के साथ कस्टम त्रुटियों को फेंकना चाहते हैं, तो वाला आपके लिए कोई वाक्य रचनात्मक चीनी नहीं पेश करता है - आपको इसे पुराने और पुराने तरीके से करना होगा। – chazomaticus