2012-01-31 14 views
20

कहाँ एक बुला समारोह के द्वारा बनाई गई लॉग पढ़ सकते हैं:जीएई गोलांग - लॉग.प्रिंट()?

log.Print("Message") 

टैब "लॉग" मुख्य तहत केवल कि कौन से URL कहा जाता था के बारे में जानकारी प्रदर्शित करने के लिए लगता है, लेकिन किसी भी डिबग जानकारी है कि आवेदन के द्वारा प्रदर्शित किया जाएगा बिना।

उत्तर

30

जैसा कि documentation में वर्णित है, आपको इंटरफ़ेस का उपयोग log के बजाय लॉग इन करने के लिए करना चाहिए, यदि आप अपने लॉग को कंसोल में दिखाना चाहते हैं।

c := appengine.NewContext(r) 
c.Infof("Requested URL: %v", r.URL) 
+3

संदर्भ को पारित किया जाना चाहिए, या एक नया एक आवश्यकतानुसार बनाया जाना चाहिए? –

+2

@NickSiderakis यह वर्तमान में वास्तव में महत्वपूर्ण नहीं है क्योंकि इसे [विकास] में दोनों एसडीके द्वारा कैश किया गया है (https://code.google.com/p/appengine-go/source/browse/appengine_internal/api_dev.go#197) और उत्पादन। – proppy

+2

क्या होता है यदि आप अनुरोध URL के बिना फ़ंक्शन डिबग कर रहे हैं !? – hendry

0

वही संदर्भ वस्तु अन्य विधि कॉलों में चारों ओर पारित की जानी चाहिए।

func handleSign(w http.ResponseWriter, r *http.Request) { 
    c := appengine.NewContext(r) 
    if err := r.ParseForm(); err != nil { 
     writeError(c, err) 
     return 
    } 
} 

func writeError(c appengine.Context, err os.Error) { 
    c.Errorf("%v", err) 
} 
+0

आपको एक अलग फ़ंक्शन लिखने की आवश्यकता क्यों है और केवल c.Errorf ("% v", err) का उपयोग न करें? – themihai

+0

इसके अलावा, ओ। एरर प्राचीन है (प्री-गो 1)। – dsymonds

+0

@ मिहाई मुझे लगता है कि यह सिर्फ एक उदाहरण है जो दिखाता है कि अगर आपको एक और विधि कॉल करना है, तो आप संदर्भ को पारित करेंगे। भले ही यह निक साइडरकीस की टिप्पणी का जवाब है, इसलिए मुझे यकीन नहीं है कि इसे उत्तर के रूप में क्यों पोस्ट किया गया है। –

7

आप नए App इंजन पैकेज google.golang.org/appengine उपयोग कर रहे हैं README में,:

  • लॉगिंग तरीकों कि appengine.Context पर थे अब google.golang.org/appengine/log
में कार्य हैं यहाँ एक उदाहरण है

तो आपको

का उपयोग करना चाहिए
c := appengine.NewContext(r) 
log.Infof(c, "Requested URL: %v", r.URL) 
संबंधित मुद्दे