Я хотел бы реализовать ведение журнала в своем приложении, но предпочел бы не использовать какие-либо внешние фреймворки, такие как log4net.
Итак, я хотел бы сделать что-то вроде эха DOS для файла. Как это сделать наиболее эффективно?
Есть ли способ регистрировать необработанные исключения, зарегистрированные без использования внешней структуры?
Ответы:
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); } }
Для получения дополнительной информации MSDN
источник
using
on-файл, хотя, поскольку он является локальным для метода, в любом случае скоро будет обнаружен.file.WriteLine(lines);
возникновении исключения код никогда не сработаетfile.Close();
. Использованиеusing
эквивалентно дляtry { // using block } finally { // Dispose }
. Это означает, что объект будет удален, даже если код внутриusing
блока вызовет исключение,Зачем? Log4net, вероятно, удовлетворит большинство ваших требований. Например, проверьте этот класс: RollingFileAppender .
Log4net хорошо документирован, и в сети есть тысячи ресурсов и вариантов использования.
источник
Вы можете писать прямо в журнал событий. Проверьте следующие ссылки:
http://support.microsoft.com/kb/307024
http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx
А вот образец из 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."); } }
источник
Если вы ищете действительно простой способ входа в систему, вы можете использовать этот лайнер. Если файл не существует, он создается.
System.IO.File.AppendAllText(@"c:\log.txt", "mymsg\n");
источник
Раньше я вел собственный журнал ошибок, пока не обнаружил ELMAH . Мне никогда не удавалось так хорошо продумать электронную почту, как это делает ELMAH.
источник
Если вы хотите оставаться рядом с .NET, ознакомьтесь с блоком приложения Enterprise Library Logging Application . Смотри сюда . Или, чтобы получить краткое руководство, проверьте это . Я использовал блок приложения Validation из корпоративной библиотеки, и он действительно соответствует моим потребностям, и его очень легко «унаследовать» (установить и изменить!) В вашем проекте.
источник
Если вам нужен собственный журнал ошибок, вы можете легко написать свой собственный код. Приведу отрывок из одного из своих проектов.
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"); } } }
Затем, чтобы на самом деле записать в журнал ошибок, просто напишите (
q
будучи пойманным исключением)источник