Dalam aplikasi J2EE (seperti yang berjalan di WebSphere), ketika saya menggunakan System.out.println()
, teks saya pergi ke standar, yang dipetakan ke file oleh konsol admin WebSphere.
Dalam aplikasi ASP.NET (seperti yang berjalan di IIS), di mana outputnya Console.WriteLine()
? Proses IIS harus memiliki stdin, stdout dan stderr; tetapi apakah stdout dipetakan ke versi Windows dari / dev / null atau apakah saya kehilangan konsep kunci di sini?
Saya tidak bertanya apakah saya harus masuk ke sana (saya menggunakan log4net), tetapi ke mana hasilnya? Info terbaik saya berasal dari diskusi ini di mana mereka mengatakan Console.SetOut()
dapat mengubah TextWriter
, tetapi masih tidak menjawab pertanyaan tentang apa nilai awal dari Konsol, atau bagaimana mengaturnya di config / di luar kode runtime.
sumber
Jawaban:
Jika Anda melihat
Console
kelas di .NET Reflector , Anda akan menemukan bahwa jika suatu proses tidak memiliki konsol terkait,Console.Out
danConsole.Error
didukung olehStream.Null
(dibungkus dengan aTextWriter
), yang merupakan implementasi tiruanStream
yang pada dasarnya mengabaikan semua input, dan tidak memberikan hasil.Jadi secara konsep setara dengan
/dev/null
, tetapi implementasinya lebih ramping: tidak ada I / O aktual yang terjadi dengan perangkat nol.Selain itu, selain menelepon
SetOut
, tidak ada cara untuk mengkonfigurasi default.sumber
Jika Anda menggunakan
System.Diagnostics.Debug.WriteLine(...)
alih-alihConsole.WriteLine()
, maka Anda dapat melihat hasilnya di jendela Output dari Visual Studio.sumber
Saya telah menemukan pertanyaan ini dengan mencoba mengubah keluaran Log dari DataContext ke jendela keluaran. Jadi bagi siapa pun yang mencoba melakukan hal yang sama, apa yang saya lakukan adalah membuat ini:
Annd setelah itu: dc.Log = new DebugTextWriter () dan saya bisa melihat semua pertanyaan di jendela output (dc adalah DataContext).
Lihat ini untuk info lebih lanjut: http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
sumber
TextWriter
?dc.Log = s => Debug.WriteLine(s);
.Jika Anda menggunakan IIS Express dan meluncurkannya melalui command prompt, itu akan membiarkan jendela DOS terbuka, dan Anda akan melihat
Console.Write
pernyataan di sana.Jadi misalnya, buka jendela perintah dan ketik:
Ini mengasumsikan Anda memiliki direktori situs web di C: \ Projects \ Website1. Ini akan memulai IIS Express dan melayani halaman-halaman dalam direktori situs web Anda. Ini akan membiarkan jendela perintah terbuka, dan Anda akan melihat informasi keluaran di sana. Katakanlah Anda memiliki file di sana, default.aspx, dengan kode ini di dalamnya:
Atur browser Anda dan perintah windows sehingga Anda bisa melihatnya di layar. Sekarang ketik ke browser Anda:
http://localhost:1655/
. Anda akan melihat Halo! di halaman web, tetapi di jendela perintah Anda akan melihat sesuatu sepertiSaya membuatnya sederhana dengan memiliki kode dalam blok kode di markup, tetapi setiap pernyataan konsol dalam kode Anda di belakang atau di mana pun dalam kode Anda akan ditampilkan di sini juga.
sumber
System.Diagnostics.Debug.WriteLine(...);
masuk ke Jendela Segera di Visual Studio 2008.Pergi ke menu Debug -> Windows -> Segera :
sumber
Output
tepat di sampingImmediate Window
Terima kasih!Tidak ada konsol mendengarkan secara default. Berjalan dalam mode debug ada konsol terpasang, tetapi dalam lingkungan produksi seperti yang Anda duga, pesan tidak pergi ke mana pun karena tidak ada yang mendengarkan.
sumber
Kecuali Anda menggunakan aplikasi konsol yang ketat, saya tidak akan menggunakannya, karena Anda tidak dapat melihatnya. Saya akan menggunakan Trace.WriteLine () untuk informasi tipe debugging yang dapat dihidupkan dan dimatikan dalam produksi.
sumber
The
TraceContext
objek dalam ASP.NET menulis denganDefaultTraceListener
yang output untuk proses host output standar . Daripada menggunakanConsole.Write()
, jika Anda menggunakanTrace.Write
, output akan menuju ke output standar dari proses.Anda bisa menggunakan
System.Diagnostics.Process
objek untuk mendapatkan proses ASP.NET untuk situs Anda dan memantau output standar menggunakanOutputDataRecieved
acara tersebut.sumber
jika Anda menggunakan NLog di proyek ASP.net Anda, Anda dapat menambahkan target Debugger :
dan menulis log ke target ini untuk level yang Anda inginkan:
sekarang Anda memiliki keluaran konsol seperti Jetty di jendela "Keluaran" VS, dan pastikan Anda menjalankan dalam Mode Debug (F5).
sumber
Ini membingungkan bagi semua orang ketika datang IISExpress. Tidak ada yang membaca pesan konsol. Jadi misalnya, dalam aplikasi ASPCORE MVC mengonfigurasi menggunakan appsettings.json yang tidak melakukan apa-apa jika Anda menggunakan IISExpress.
Untuk saat ini Anda bisa menambahkan loggerFactory.AddDebug (LogLevel.Debug); di bagian Konfigurasi Anda dan setidaknya akan menunjukkan Anda log Anda di jendela Output Debug.
Berita baik CORE 2.0 ini semua akan berubah: https://github.com/aspnet/Announcements/issues/255
sumber
Mac, Dalam mode Debug ada tab untuk Output.
sumber
Dalam aplikasi ASP.NET, saya pikir itu pergi ke jendela Output atau Console yang terlihat selama debugging.
sumber