Zur Aufzeichnung von Anwendungsbetriebsprotokollen können Datenbanken, Textdateien, XML-Dateien usw. verwendet werden. Was ich hier vorstelle, ist die Verwendung von XML-Dateien zum Aufzeichnen von Betriebsprotokollen.
Ich denke, dass die Verwendung von XML zum Aufzeichnen von Betriebsprotokollen die folgenden Vorteile hat:
1. Es belegt keinen Datenbankspeicherplatz und kann historische Betriebsprotokolle nach Belieben löschen.
2. DataTable kann XML-Dateien problemlos lesen und DataTable kann auch problemlos als XML-Dateien gespeichert werden.
3. Es ist praktisch, das Protokoll anzuzeigen. Sie können die XML-Datei direkt öffnen, um sie anzuzeigen, oder Sie können sie in die DataTable einlesen und sie dann über das Programm anzeigen.
Die Methode zur Verwendung von XML-Dateien zum Aufzeichnen von Betriebsprotokollen in VS2005 lautet wie folgt:
1. Erstellen Sie einen Datensatz: JobLogDataSet.xsd
Dazu gehören 6 Felder: TraceLevel (Protokolltyp), User (Benutzer), DateTime (Betriebszeit), Module (Modul), Function (Funktion) und Message (Nachricht).
Wenn dies nicht ausreicht, fügen Sie es selbst hinzu. TraceLevel (Protokolltyp) bezieht sich auf Info, Warnung, Fehler, Trance und Aus.
2. Erstellen Sie den Protokolltyp ///
/// Protokolltyp
///
öffentliche Aufzählung LogType
{
///
/// Information
///
Info,
///
/// warnen
///
Warnung,
///
/// Fehler
///
Fehler,
///
/// Tracking
///
Verfolgen,
///
/// Keine Protokollierung
///
Aus
}
2. So schreiben Sie ein Protokoll
///
/// Protokoll schreiben
///
/// Protokolltyp (Info, Warnung, Fehler, Trance, Aus)
/// Benutzer
/// Modul
/// Funktion
/// Nachricht
public static void WriteLog(LogType logType, string user, string module, string function, string message)
{
versuchen
{
// Typ LogType.Off zeichnet keine Protokolle auf
if (logType == LogType.Off)
return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
// Eine Protokolldatei (.XML-Datei) jeden Tag, der Name der Protokolldatei lautet: JobLog yyyy-MM-dd.xml
Zeichenfolge jobLogFile = AppDomain.CurrentDomain.BaseDirectory + „JobLog“ +
DateTime.Today.ToString("yyyy-MM-dd") + ".xml";
if (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
// Protokolle aus der .XML-Datei lesen
t.ReadXml(jobLogFile);
//Ein Protokoll hinzufügen
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
r.User = Benutzer;
r.Datetime = DateTime.Now;
r.Module = Modul;
r.Function = Funktion;
r.Message = Nachricht;
t.AddJobLogRow(r);
// Protokoll in XML-Datei speichern
t.WriteXml(jobLogFile);
}
Catch(Ausnahme)
{}
}
3. So lesen Sie Protokolle
///
/// Protokoll lesen
///
///
öffentliches statisches JobLogDataSet.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = new JobLogDataSet.JobLogDataTable();
versuchen
{
// Alle Protokolldateien JobLog*.xml aus dem Anwendungsordner abrufen
string[] jobLogFiles = Directory.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly);
// Jeden Protokolldatensatz in die Protokolldatentabelle einlesen
foreach (Zeichenfolge jobLogFile in jobLogFiles)
{
if (File.Exists(jobLogFile))
{
//Alle Protokolldateien in temporäre DataTable lesen
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
//Protokolldatensätze in die Hauptprotokolldatentabelle importieren
foreach (JobLogDataSet.JobLogRow r in t)
jobLogDataTable.ImportRow(r);
}
}
// Das gelesene Protokoll DataTable zurückgeben
return jobLogDataTable;
}
Catch(Ausnahme)
{
return jobLogDataTable;
}
}
4. Wenn Sie ein Protokoll schreiben müssen, rufen Sie einfach direkt die Methode WriteLog auf.