Saya ingin menerapkan logging di aplikasi saya, tetapi lebih suka tidak menggunakan kerangka kerja luar seperti log4net.
Jadi saya ingin melakukan sesuatu seperti echo DOS ke file. Apa cara paling efektif untuk melakukannya?
Apakah ada cara untuk mencatat log pengecualian yang tidak tertangani tanpa menggunakan kerangka kerja luar?
Jawaban:
public void Logger(string lines) { //Write the string to a file.append mode is enabled so that the log //lines get appended to test.txt than wiping content and writing the log using(System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt", true)) { file.WriteLine(lines); } }
Untuk informasi lebih lanjut MSDN
sumber
using
file, meskipun karena bersifat lokal, metode akan segera diposisikan.file.WriteLine(lines);
melempar pengecualian, kode tidak akan pernah mengenaifile.Close();
. Memanfaatkanusing
adalah setara dengantry { // using block } finally { // Dispose }
. Ini berarti bahwa objek akan dibuang bahkan jika kode di dalamusing
blok mengeluarkan pengecualian,Mengapa? Log4net mungkin akan memenuhi sebagian besar kebutuhan Anda. Misalnya, periksa kelas ini: RollingFileAppender .
Log4net didokumentasikan dengan baik dan ada ribuan sumber daya dan kasus penggunaan di web.
sumber
Anda dapat menulis langsung ke log peristiwa. Periksa tautan berikut:
http://support.microsoft.com/kb/307024
http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx
Dan inilah contoh dari MSDN:
using System; using System.Diagnostics; using System.Threading; class MySample{ public static void Main(){ // Create the source, if it does not already exist. if(!EventLog.SourceExists("MySource")) { //An event log source should not be created and immediately used. //There is a latency time to enable the source, it should be created //prior to executing the application that uses the source. //Execute this sample a second time to use the new source. EventLog.CreateEventSource("MySource", "MyNewLog"); Console.WriteLine("CreatedEventSource"); Console.WriteLine("Exiting, execute the application a second time to use the source."); // The source is created. Exit the application to allow it to be registered. return; } // Create an EventLog instance and assign its source. EventLog myLog = new EventLog(); myLog.Source = "MySource"; // Write an informational entry to the event log. myLog.WriteEntry("Writing to event log."); } }
sumber
Jika Anda mencari cara yang sangat sederhana untuk log, Anda dapat menggunakan liner yang satu ini. Jika file tidak ada, itu dibuat.
System.IO.File.AppendAllText(@"c:\log.txt", "mymsg\n");
sumber
Saya biasa menulis catatan kesalahan saya sendiri sampai saya menemukan ELMAH . Saya tidak pernah bisa mendapatkan bagian email sesempurna ELMAH.
sumber
Jika Anda ingin tetap dekat dengan .NET, periksa Blok Aplikasi Pencatatan Perpustakaan Perusahaan . Lihat di sini . Atau untuk tutorial memulai cepat, periksa ini . Saya telah menggunakan Blok aplikasi Validasi dari Perpustakaan Perusahaan dan itu benar-benar sesuai dengan kebutuhan saya dan sangat mudah untuk "mewarisi" (menginstalnya dan menyusun ulang!) Dalam proyek Anda.
sumber
Jika Anda menginginkan Error Logging kustom Anda sendiri, Anda dapat dengan mudah menulis kode Anda sendiri. Saya akan memberi Anda cuplikan dari salah satu proyek saya.
public void SaveLogFile(object method, Exception exception) { string location = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\FolderName\"; try { //Opens a new file stream which allows asynchronous reading and writing using (StreamWriter sw = new StreamWriter(new FileStream(location + @"log.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite))) { //Writes the method name with the exception and writes the exception underneath sw.WriteLine(String.Format("{0} ({1}) - Method: {2}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), method.ToString())); sw.WriteLine(exception.ToString()); sw.WriteLine(""); } } catch (IOException) { if (!File.Exists(location + @"log.txt")) { File.Create(location + @"log.txt"); } } }
Kemudian untuk benar-benar menulis ke log kesalahan cukup tulis (
q
menjadi pengecualian yang tertangkap)sumber