¿Cómo hago para iniciar sesión en C # sin usar bibliotecas de terceros?

Me gustaría implementar el registro en mi aplicación, pero preferiría no utilizar marcos externos como log4net.

Entonces me gustaría hacer algo como el eco de DOS en un archivo. ¿Cuál es la forma más efectiva de hacerlo?

¿Hay alguna manera de registrar las excepciones no controladas registradas sin usar un marco externo?

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 System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt",true); file.WriteLine(lines); file.Close(); } 

Para más información MSDN :

Puede usar el System.Diagnostics.TraceSource incorporado.
Aquí hay una lista de los escuchas de seguimiento incorporados + FileLogTraceListener .

Hay muchos manuales en la web como este , o este por Jeff Atwood + mejoras .

Preferiría no usar frameworks externos como log4j.net.

¿Por qué? Log4net probablemente abordaría la mayoría de sus requisitos. Por ejemplo, consulte esta clase: RollingFileAppender .

Log4net está bien documentado y hay miles de recursos y casos de uso en la web.

Puede escribir directamente en un registro de eventos. Verifique los siguientes enlaces:
http://support.microsoft.com/kb/307024
http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx

Y aquí está la muestra de 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."); } } 

Si está buscando una forma realmente simple de iniciar sesión, puede usar este trazador de líneas. Si el archivo no existe, se crea.

 System.IO.File.AppendAllText(@"c:\log.txt", "mymsg\n"); 

Solía ​​escribir mi propio registro de errores hasta que descubrí ELMAH . Nunca he podido obtener la parte de envío de correos electrónicos tan perfectamente como lo hace ELMAH.

Si desea permanecer cerca de .NET, consulte el Bloque de la aplicación de registro de la biblioteca empresarial . Mira aquí . O para un tutorial de inicio rápido verifique esto . He utilizado el Bloque de la aplicación de validación de la Biblioteca de empresa y realmente se adapta a mis necesidades y es muy fácil “heredar” (¡instalarlo y refrenciarlo!) En su proyecto.

Estoy usando NLOG . Es shiny.

Si quiere su propio registro de errores personalizado, puede escribir fácilmente su propio código. Te daré un fragmento de uno de mis proyectos.

 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"); } } } 

Luego, para escribir realmente en el registro de errores simplemente escriba ( q es la excepción detectada)

 SaveLogFile(MethodBase.GetCurrentMethod(), `q`); 

Sugeriría “Postsharp “. Proporciona un marco muy elegante para implementar el registro sin modificar ninguna lógica comercial.