visual studio sentencia lenguaje funciona else ejemplos crear como c# .net winforms performance logging

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



lenguaje c if else ejemplos (10)

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.

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 echo 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?


Estoy usando NLOG . Es brillante.


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 desea permanecer cerca de .NET, consulte el Bloque de la aplicación de registro de la biblioteca empresarial . Mira here . O para un tutorial de inicio rápido verifique this . 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.


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


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`);


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.


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


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 :