Des bases de données, des fichiers texte, des fichiers XML, etc. peuvent être utilisés pour enregistrer les journaux d'opérations des applications. Ce que je présente ici, c'est l'utilisation de fichiers XML pour enregistrer les journaux d'opérations.
Je pense que l'utilisation de XML pour enregistrer les journaux d'opérations présente les avantages suivants :
1. Il n'occupe pas d'espace de base de données et peut supprimer les journaux d'opérations historiques à volonté.
2. DataTable peut facilement lire les fichiers XML et DataTable peut également être facilement enregistré sous forme de fichiers XML.
3. Il est pratique d'afficher le journal. Vous pouvez ouvrir directement le fichier XML pour le visualiser, ou vous pouvez le lire dans le DataTable, puis le visualiser via le programme.
La méthode pour utiliser des fichiers XML pour enregistrer les journaux d'opérations dans VS2005 est la suivante :
1. Créez un ensemble de données : JobLogDataSet.xsd
Cela comprend 6 champs : TraceLevel (type de journal), User (utilisateur), DateTime (heure de fonctionnement), Module (module), Function (fonction) et Message (message).
Si cela ne suffit pas, ajoutez-le vous-même. TraceLevel (type de journal) fait référence à Info, Warning, Error, Trance et Off.
2. Créer un type de journal /// <résumé>
/// Type de journal
/// </summary>
Type de journal enum public
{
/// <résumé>
/// information
/// </summary>
Infos,
/// <résumé>
/// avertir
/// </summary>
Avertissement,
/// <résumé>
/// erreur
/// </summary>
Erreur,
/// <résumé>
/// Suivi
/// </summary>
Tracer,
/// <résumé>
/// Pas de journalisation
/// </summary>
Désactivé
}
2. Comment rédiger un journal
/// <résumé>
/// Écrire le journal
/// </summary>
/// <param name="traceLevel">Type de journal (Info, Avertissement, Erreur, Transe, Désactivé)</param>
/// <param name="user">Utilisateur</param>
/// <param name="module">Module</param>
/// <param name="function">Fonction</param>
/// <param name="message">Message</param>
public static void WriteLog (LogType logType, utilisateur de chaîne, module de chaîne, fonction de chaîne, message de chaîne)
{
essayer
{
// Tapez LogType.Off n'enregistre pas les journaux
si (logType == LogType.Off)
return ;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
// Un fichier journal (fichier .XML) chaque jour, le nom du fichier journal est : JobLog aaaa-MM-jj.xml.
chaîne jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog" +
DateTime.Today.ToString("aaaa-MM-jj") + ".xml";
si (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
// Lire les journaux à partir du fichier .XML
t.ReadXml(jobLogFile);
//Ajouter un journal
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
r.Utilisateur = utilisateur ;
r.Datetime = DateTime.Maintenant ;
r.Module = module;
r.Fonction = fonction ;
r.Message = message ;
t.AddJobLogRow(r);
// Enregistrer le journal dans un fichier XML
t.WriteXml(jobLogFile);
}
attraper (Exception)
{}
}
3. Comment lire les journaux
/// <résumé>
/// Lire le journal
/// </summary>
/// <returns>Renvoie le DataTable pour lire le journal</returns>
public statique JobLogDataSet.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = new JobLogDataSet.JobLogDataTable();
essayer
{
// Récupère tous les fichiers journaux JobLog*.xml à partir du dossier de l'application
string[] jobLogFiles = Répertoire.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly);
// Lire chaque enregistrement de journal dans le journal DataTable
foreach (chaîne jobLogFile dans jobLogFiles)
{
if (Fichier.Exists(jobLogFile))
{
//Lire tous les fichiers journaux dans un DataTable temporaire
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
// Importer les enregistrements du journal dans le journal principal DataTable
foreach (JobLogDataSet.JobLogRow r dans t)
jobLogDataTable.ImportRow(r);
}
}
// Renvoie le journal de lecture DataTable
retourner jobLogDataTable ;
}
attraper (Exception)
{
retourner jobLogDataTable ;
}
}
4. Partout où vous avez besoin d'écrire un journal, appelez simplement la méthode WriteLog directement.