Se pueden utilizar bases de datos, archivos de texto, archivos XML, etc. para registrar los registros de operación de la aplicación. Lo que presento aquí es el uso de archivos XML para registrar registros de operaciones.
Creo que usar XML para registrar registros de operaciones tiene los siguientes beneficios:
1. No ocupa espacio en la base de datos y puede eliminar registros de operaciones históricos a voluntad.
2. DataTable puede leer fácilmente archivos XML y DataTable también se puede guardar fácilmente como archivos XML.
3. Es conveniente ver el registro. Puede abrir directamente el archivo XML para verlo, o puede leerlo en DataTable y luego verlo a través del programa.
El método para utilizar archivos XML para registrar registros de operaciones en VS2005 es el siguiente:
1. Cree un conjunto de datos: JobLogDataSet.xsd
Esto incluye 6 campos: TraceLevel (tipo de registro), Usuario (usuario), DateTime (hora de operación), Módulo (módulo), Función (función) y Mensaje (mensaje).
Si no es suficiente, agréguelo usted mismo. TraceLevel (tipo de registro) se refiere a Información, Advertencia, Error, Trance y Desactivado.
2. Crear tipo de registro /// <resumen>
/// tipo de registro
/// </summary>
enumeración pública tipo de registro
{
/// <resumen>
/// información
/// </summary>
Información,
/// <resumen>
/// advertir
/// </summary>
Advertencia,
/// <resumen>
/// error
/// </summary>
Error,
/// <resumen>
/// Seguimiento
/// </summary>
Rastro,
/// <resumen>
/// Sin registro
/// </summary>
Apagado
}
2. Cómo escribir un registro
/// <resumen>
/// Escribir registro
/// </summary>
/// <param name="traceLevel">Tipo de registro (Información, Advertencia, Error, Trance, Desactivado)</param>
/// <param nombre="usuario">Usuario</param>
/// <param nombre="módulo">Módulo</param>
/// <param nombre="función">Función</param>
/// <param nombre="mensaje">Mensaje</param>
WriteLog vacío estático público (LogType logType, usuario de cadena, módulo de cadena, función de cadena, mensaje de cadena)
{
intentar
{
// Escriba LogType.Off no registra registros
si (logType == LogType.Off)
return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable()
// Un archivo de registro (archivo .XML) cada día, el nombre del archivo de registro es: JobLog yyyy-MM-dd.xml
cadena jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog " +
DateTime.Today.ToString("aaaa-MM-dd") + ".xml";
si (! Archivo.Existe (archivo de registro de trabajo))
t.WriteXml(jobLogFile);
// Leer registros del archivo .XML
t.ReadXml(jobLogFile);
//Agregar un registro
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
r.Usuario = usuario;
r.Fechahora = FechaHora.Ahora;
r.Módulo = módulo;
r.Función = función;
r.Mensaje = mensaje;
t.AddJobLogRow(r);
// Guardar registro en un archivo XML
t.WriteXml(jobLogFile);
}
captura (excepción)
{}
}
3. Cómo leer registros
/// <resumen>
/// Leer registro
/// </summary>
/// <returns>Devuelve el DataTable para leer el registro</returns>
JobLogDataSet.JobLogDataTable ReadLog() estático público
{
JobLogDataSet.JobLogDataTable jobLogDataTable = nuevo JobLogDataSet.JobLogDataTable();
intentar
{
// Obtener todos los archivos de registro JobLog*.xml de la carpeta de la aplicación
cadena[] jobLogFiles = Directory.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly
// Lee cada registro en el registro DataTable
);
foreach (cadena jobLogFile en jobLogFiles)
{
si (Archivo.Existe (archivo de registro de trabajo))
{
//Lee todos los archivos de registro en una tabla de datos temporal
JobLogDataSet.JobLogDataTable t = nuevo JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
//Importar registros de registro al registro principal DataTable
foreach (JobLogDataSet.JobLogRow r en t)
jobLogDataTable.ImportRow(r);
}
}
// Devuelve el registro de lectura DataTable
devolver tabla de datos de registro de trabajo;
}
captura (excepción)
{
devolver tabla de datos de registro de trabajo;
}
}
4. Siempre que necesite escribir un registro, simplemente llame directamente al método WriteLog.