2012-11-21 9 views
9

गो में लॉगिंग करने का एक बेवकूफ तरीका क्या है?गो लाइब्रेरी में बेवकूफ लॉगिंग को कैसे कार्यान्वित करें?

+0

तीसरे पक्ष के पुस्तकालयों का समूह है जो अधिक सुविधा पूर्ण कार्यान्वयन प्रदान करता है। उदाहरण के लिए, मानक पुस्तकालय में मैंने कस्टम स्वरूपण और लॉग स्तर (डीबग, जानकारी, ...) के लिए एक सुविधाजनक विकल्प याद किया और मैं अपनी लाइब्रेरी को कार्यान्वित करना समाप्त कर देता हूं - [go-log] (https://github.com/scale -यह/गो-लॉग)। इस पर एक नज़र मारो। –

उत्तर

11

एक ऐसी फ़ाइल बनाएं जो वैश्विक चर घोषित करे लॉगर। फिर, स्टार्टअप पर चर प्रारंभ करने के लिए Goi के idiomatic init() फ़ंक्शन का उपयोग करें।

logger.go:

package xxx 

import (
    "log" 
    "os" 
) 

var logger *log.Logger 
func init() { 
    logger = log.New(os.Stderr, "xxx: ", log.Ldate | log.Ltime | log.Lshortfile) 
} 

example.go:

func test() { 
    logger.Println("Logged") 
} 

इस विधि लाभ यह है कि आप एक ही लकड़हारा कार्यान्वयन के लिए एक एकल से विन्यस्त किया जा सकता है कि उपयोग कर सकते हैं प्रदान करता है फ़ाइल।

संपादित करें: ThomasKappler ने बताया कि यदि आप केवल एक ही वैश्विक लकड़हारा उपयोग कर रहे हैं, आप लॉग पैकेज की इनबिल्ट लकड़हारा का उपयोग करें और SetFlags के साथ इसे कॉन्फ़िगर कर सकते हैं। केवल अंतर यह है कि आपको अधिक स्पष्ट होना चाहिए और लॉग पैकेज आयात करना चाहिए।

+11

यदि आप केवल एक वैश्विक लॉगर का उपयोग करते हैं, तो आप अपना स्वयं का निर्माण छोड़ सकते हैं और log.Println आदि जैसे लॉग पैकेज के फ़ंक्शंस का उपयोग कर सकते हैं। आप इसे अभी भी लॉग.SetFlags() से कॉन्फ़िगर कर सकते हैं। –

+0

@ थॉमस कैप्लर धन्यवाद, मुझे यह नहीं पता था। मैं इस विधि का उपयोग करना पसंद करता हूं क्योंकि मैं मौजूदा कार्यक्षमता को तोड़ने के बिना लॉगर का विस्तार कर सकता हूं (साथ ही मुझे हर जगह लॉग पैकेज आयात करने की आवश्यकता नहीं है) – liamzebedee

संबंधित मुद्दे