Console.WriteLine ASP.NET में कहां जाता है?




iis (8)

एक जे 2 ईई अनुप्रयोग (जैसे वेबस्पेयर में चल रहा है) में, जब मैं System.out.println() उपयोग करता हूं, तो मेरा टेक्स्ट मानक आउट हो जाता है, जिसे वेबस्पेयर एडमिन कंसोल द्वारा फ़ाइल में मैप किया जाता है।

एक एएसपी.नेट आवेदन (जैसे आईआईएस में चल रहा है) में, Console.WriteLine() का आउटपुट कहां जाता है? आईआईएस प्रक्रिया में एक stdin, stdout और stderr होना चाहिए; लेकिन / dev / null के विंडोज संस्करण में मैप किया गया है या क्या मुझे यहां एक महत्वपूर्ण अवधारणा याद आ रही है?

मैं नहीं पूछ रहा हूं कि मुझे वहां लॉग इन करना चाहिए (मैं लॉग 4नेट का उपयोग करता हूं), लेकिन आउटपुट कहां जाता है? मेरी सबसे अच्छी जानकारी इस discussion से आई, जहां वे Console.SetOut() कहते हैं Console.SetOut() TextWriter को बदल सकता है, लेकिन यह अभी भी कंसोल का प्रारंभिक मान क्या है, या इसे रनटाइम के बाहर / कॉन्फ़िगर में सेट करने के तरीके पर सवाल का जवाब नहीं दिया है कोड।


ASP.NET में TraceContext ऑब्जेक्ट TraceContext को लिखता है जो मेजबान प्रक्रिया ' मानक आउटपुट को आउटपुट करता हैConsole.Write() का उपयोग करने के बजाय, यदि आप Trace.Write उपयोग Trace.Write , तो आउटपुट प्रक्रिया के मानक आउटपुट पर जाएगा।

आप अपनी साइट के लिए एएसपी.NET प्रक्रिया प्राप्त करने के लिए System.Diagnostics.Process ऑब्जेक्ट का उपयोग कर सकते हैं और OutputDataRecieved ईवेंट का उपयोग कर मानक आउटपुट की निगरानी कर सकते हैं।


एक एएसपी.NET अनुप्रयोग में, मुझे लगता है कि यह आउटपुट या कंसोल विंडो पर जाता है जो डिबगिंग के दौरान दिखाई देता है।


डिफ़ॉल्ट रूप से कोई कंसोल नहीं सुन रहा है। डीबग मोड में चल रहा एक कंसोल संलग्न है, लेकिन एक उत्पादन वातावरण में जैसा कि आपको संदेह है, संदेश सिर्फ कहीं नहीं जाता है क्योंकि कुछ भी नहीं सुन रहा है।


मुझे डेटा कॉन्टेक्स्ट के लॉग आउटपुट को आउटपुट विंडो में बदलने की कोशिश करके यह प्रश्न मिला है। तो किसी और को ऐसा करने की कोशिश कर रहा है, मैंने जो किया है वह यह था:

class DebugTextWriter : System.IO.TextWriter {
   public override void Write(char[] buffer, int index, int count) {
       System.Diagnostics.Debug.Write(new String(buffer, index, count));
   }

   public override void Write(string value) {
       System.Diagnostics.Debug.Write(value);
   }

   public override Encoding Encoding {
       get { return System.Text.Encoding.Default; }
   }
}

उसके बाद अंत: dc.Log = new DebugTextWriter () और मैं आउटपुट विंडो में सभी प्रश्न देख सकता हूं (डीसी डेटाकॉन्टेक्स्ट है)।

अधिक जानकारी के लिए इसे देखें: http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers


यदि आप Console.WriteLine() System.Diagnostics.Debug.WriteLine(...) बजाय System.Diagnostics.Debug.WriteLine(...) उपयोग करते हैं, तो आप विजुअल स्टूडियो की आउटपुट विंडो में परिणाम देख सकते हैं।


यदि आप आईआईएस एक्सप्रेस का उपयोग कर रहे हैं और इसे कमांड प्रॉम्प्ट के माध्यम से लॉन्च करते हैं, तो यह DOS विंडो खुल जाएगा, और आप Console.Write देखेंगे। वहां कथन कथन देखेंगे।

तो उदाहरण के लिए एक कमांड विंडो खोलें और टाइप करें:

"C:\Program Files (x86)\IIS Express\iisexpress" /path:C:\Projects\Website1 /port:1655

यह मानता है कि आपके पास C: \ Projects \ Website1 पर एक वेबसाइट निर्देशिका है। यह आईआईएस एक्सप्रेस शुरू करेगा और आपकी वेबसाइट निर्देशिका में पृष्ठों की सेवा करेगा। यह कमांड विंडोज़ को खुल जाएगा, और आप वहां आउटपुट जानकारी देखेंगे। आइए मान लें कि आपके पास एक फ़ाइल थी, default.aspx, इसमें इस कोड के साथ:

<%@ Page Language="C#" %>
<html>
<body>
    <form id="form1" runat="server">
    Hello!

    <% for(int i = 0; i < 6; i++) %>
       <% { Console.WriteLine(i.ToString()); }%>

    </form>
</body>
</html>

अपने ब्राउज़र और कमांड विंडो व्यवस्थित करें ताकि आप उन्हें स्क्रीन पर दोनों देख सकें। अब अपने ब्राउज़र में टाइप करें: http://localhost:1655/ । आप हैलो देखेंगे! वेबपृष्ठ पर, लेकिन कमांड विंडो में आप कुछ ऐसा देखेंगे

Request started: "GET" http://localhost:1655/
0
1
2
3
4
5
Request ended: http://localhost:1655/default.aspx with HTTP status 200.0

मैंने मार्कअप में कोड ब्लॉक में कोड करके इसे सरल बना दिया है, लेकिन आपके code-behind में आपके code-behind या कहीं भी किसी भी कंसोल स्टेटमेंट्स भी यहां दिखाए जाएंगे।


यह IISExpress आने पर हर किसी के लिए भ्रमित है। कंसोल संदेशों को पढ़ने के लिए कुछ भी नहीं है। तो उदाहरण के लिए, एएसपीकोर एमवीसी ऐप्स में यह appsettings.json का उपयोग करके कॉन्फ़िगर करता है जो कि यदि आप IISExpress का उपयोग कर रहे हैं तो कुछ भी नहीं करता है।

अभी के लिए आप केवल loggerFactory.AddDebug (LogLevel.Debug) जोड़ सकते हैं; अपने कॉन्फ़िगर अनुभाग में और यह आपको कम से कम डीबग आउटपुट विंडो में अपने लॉग दिखाएगा।

अच्छी खबर कोर 2.0 यह सब बदल जाएगी: https://github.com/aspnet/Announcements/issues/255


System.Diagnostics.Debug.WriteLine(...); इसे विजुअल स्टूडियो 2008 में तत्काल विंडो में ले जाता है।

मेनू डीबग पर जाएं -> विंडोज़ -> तत्काल :





console.writeline