Varios métodos de administración de registros en .Net
Log son una parte indispensable de la aplicación. No solo pueden registrar el estado de ejecución de la aplicación, sino también registrar algunos ERRORES para facilitar la actualización y modificación de la aplicación.
Hay varias formas de administrar registros en .Net.
1. Registro de la base de datos.
2. Registro de texto.
3. Registro de eventos del sistema.
En primer lugar, es sencillo y cómodo de utilizar para los registros de bases de datos. No discutiré demasiado aquí. Creo que cualquiera que haya escrito proyectos relacionados con datos utilizará datos para registrar algunos registros. Sin embargo, la única desventaja es que primero debe asegurarse de que el enlace de su base de datos sea correcto.
Sin embargo, esta garantía no es inevitable, por lo que aquí analizaré las otras dos situaciones: registros de texto y registros de eventos del sistema.
Registro de texto:
Es fácil de usar y fácil de ver. La desventaja es que no es conveniente crear una gran cantidad de registros y no es conveniente ver y analizar el contenido del registro. Sin embargo, todavía se puede utilizar en algunos lugares donde el registro de bases de datos no es adecuado. Por ejemplo, la salida de algunos mensajes de prueba, una pequeña cantidad de registros de algunos componentes independientes, etc.
En circunstancias normales, para facilitar la gestión, los archivos de registro se clasifican en unidades de días. De esta forma, los archivos se pueden gestionar fácilmente. Por ejemplo: puede saber cuándo está este registro por su nombre de archivo y luego simplemente puede realizar una consulta similar a una base de datos, y la administración también es conveniente. Después de todo, el texto es muy sencillo para el sistema.
.Net tiene una clase de diagnóstico que puede agregar texto a Trace y Debug en forma de escucha. De esta manera, toda la salida dirigida a Trace y Degug se registrará en el archivo. Este es un muy buen método.
usando System.Diagnostics
Debug.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("aaaaMMdd")+"..log"));
Console.Out
));
Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("aaaaMMdd")+"..log"));
Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(Console.Out));
la diferencia aquí es: Trace se puede usar en Release, mientras que Debug solo se puede usar en Debug.
Creo que entre todos los registros de texto, el método anterior es el más útil. Solo necesita crear otra clase de administración de registros.
Por supuesto, también debes tener en cuenta que el monitor debe actualizarse después de 24 horas. Debes limpiar el monitor actual y agregar uno nuevo. También es sencillo.
Otro método es escribir el texto usted mismo para su gestión. Este método es un poco más problemático, pero no difícil.
Sin embargo, además de ser inconvenientes para realizar una gran cantidad de trabajo de registro, los registros de texto también tienen un problema fatal: ¡conflictos de proceso!
Debido a que el registro de texto bloquea el archivo de texto que se está escribiendo, otros programas que quieran escribir en el archivo encontrarán errores. En circunstancias normales, si solo se ejecuta una copia del programa y el registro se procesa como un objeto estático global, no habrá ningún gran problema. Pero la segunda copia del programa no podrá iniciarse porque el archivo no se puede abrir.
Este no es un problema irresoluble, sólo asegúrese de tener una copia del programa. Si no está garantizado, entonces es un poco complicado, por lo que no lo discutiremos más aquí. Discutiremos este tema la próxima vez que tengamos la oportunidad.
Para el problema anterior, quiero abandonar temporalmente el registro de texto y utilizar el registro de eventos del sistema para solucionarlo.
Registro de eventos del sistema:
Hay una clase EventLog en .net, que está directamente asociada con el registro de eventos del sistema.
Uno sencillo:
EventLog.WriteEntry("LogSource","Este es un registro de prueba.");
Puede escribir un evento en el sistema.
Sin embargo, utilizarlo bien puede resultar un poco complicado. Primero, el método anterior escribirá un registro de eventos en la Aplicación del sistema y el valor predeterminado es el tipo de Información. Esto no es propicio para la administración. Puede consultar los registros en la herramienta de administración y encontrará una gran cantidad de registros. Es imposible encontrar un pequeño registro escrito por usted mismo.
Sin embargo, .Net nos proporciona varios métodos para gestionar mejor los registros.
1. Agregue un nuevo LogSource.
¿Qué es LogSource? De hecho, en pocas palabras, es una marca de clasificación de registros. Por ejemplo, puede utilizar un programa para recuperar registros cuyo LogSource sea el contenido especificado al mismo tiempo. De esta manera, siempre que recuerde el nombre de la Fuente, podrá leer y clasificar los registros.
De forma predeterminada, cuando escribe registros directamente utilizando la función estática de EventLog, debe especificar un LogSource. Si LogSource no existe, creará uno automáticamente en la Aplicación. Por lo tanto, crear un LogSource es tan simple como eso.
2. Agregue un nuevo registro.
¿Qué es el Registro? El Registro aquí se refiere a la clasificación de registros grandes en el registro de eventos del sistema. Generalmente, el sistema tiene tres registros: Aplicación, Sistema y Servicio, cada uno con una Fuente diferente, formando así un sistema de registro.
No puede crear un registro de forma independiente, porque .NET no proporciona ningún método para crear un registro, solo puede usar la función: CreateEventSource(cadena, cadena)
Para crear una Fuente, si hace esto: CreateEventSource("MySource", "MyLog");
Verá una clase MyLog adicional en el administrador de registros y luego escribirá el registro de esta manera:
EventLog.WriteEntry("MySource","Este es un registro de prueba.");
Puede escribir un registro en la categoría MyLog, para poder administrar bien sus propios registros.
Lo que hay que explicar es:
Si la Fuente ya existe, la creación fracasará. Nota: No importa qué registro de origen, siempre que el nombre de origen ya exista, su creación fallará. Por ejemplo: si hay un registro de "Fuente1" en la Aplicación, no puede crear un registro llamado "Fuente1" en otros registros. Además: los registros que crea utilizando el programa no se pueden eliminar en el administrador de registros (los mensajes se pueden eliminar, pero las categorías de registros no se pueden eliminar). El método es que aún puedes usar un programa para eliminarlo o eliminarlo del registro. Su ubicación: [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlog]
Echa un vistazo al registro, tal vez entiendas algo.
El último paso es utilizar el objeto de instancia de registro para escribir el registro. Puede especificar un nombre de registro y un nombre de fuente para escribir registros, pero tenga en cuenta que el registro y la fuente deben coincidir; de lo contrario, se producirá un error. Esto es un poco más complicado que iniciar sesión directamente utilizando métodos estáticos, pero tienes más libertad.
La desventaja del registro de eventos del sistema es que el registro solo se guarda durante tres meses y es difícil de administrar. Sería mejor si pudiera administrar el servidor directamente o ejecutarlo localmente; de lo contrario, tendría que escribir algún código para administrar los registros usted mismo. Por supuesto, si algunos registros importantes se pueden exportar a otros archivos.
Sus beneficios son muchos:
1. No es necesario conectarse a la base de datos, la eficiencia será mayor y no habrá problemas de falla de acceso a la base de datos.
2. No habrá conflictos de proceso. Es un registro del sistema, no importa qué aplicación sea, puede escribir registros.
3. Disponibles globalmente, los registros se pueden escribir directamente sin importar dónde se encuentren y sean legibles. Por tanto, puede considerarse como una plataforma de comunicación por mensajería. (Por supuesto, tal vez solo aquellos con algunos problemas cerebrales hagan esto). Sin embargo, solo quiero explicar: el registro escrito por el proceso A puede ser leído directamente por el proceso B.
Bien, esta vez se trata del registro.
http://www.cnblogs.com/WuCountry/archive/2006/08/22/483090.html