Basis data, file teks, file XML, dll. dapat digunakan untuk mencatat log operasi aplikasi. Yang saya perkenalkan di sini adalah penggunaan file XML untuk mencatat log operasi.
Saya pikir menggunakan XML untuk mencatat log operasi memiliki manfaat sebagai berikut:
1. Itu tidak menempati ruang database dan dapat menghapus log operasi historis sesuka hati.
2. DataTable dapat dengan mudah membaca file XML, dan DataTable juga dapat dengan mudah disimpan sebagai file XML.
3. Melihat log akan lebih mudah. Anda dapat langsung membuka file XML untuk melihatnya, atau Anda dapat membacanya ke dalam DataTable dan kemudian melihatnya melalui program.
Cara menggunakan file XML untuk mencatat log operasi di VS2005 adalah sebagai berikut:
1. Buat kumpulan data: JobLogDataSet.xsd
Ini mencakup 6 bidang: TraceLevel (tipe log), Pengguna (pengguna), DateTime (waktu pengoperasian), Modul (modul), Fungsi (fungsi), dan Pesan (pesan).
Jika belum cukup, tambahkan sendiri. TraceLevel (tipe log) mengacu pada Info, Peringatan, Error, Trance, dan Off.
2. Buat tipe log /// <ringkasan>
/// Tipe log
/// </ringkasan>
Tipe Log enum publik
{
/// <ringkasan>
/// informasi
/// </ringkasan>
informasi,
/// <ringkasan>
/// memperingatkan
/// </ringkasan>
Peringatan,
/// <ringkasan>
/// kesalahan
/// </ringkasan>
Kesalahan,
/// <ringkasan>
/// Pelacakan
/// </ringkasan>
Jejak,
/// <ringkasan>
/// Tidak ada pencatatan
/// </ringkasan>
Mati
}
2. Cara menulis log
/// <ringkasan>
/// Tulis catatan
/// </ringkasan>
/// <param name="traceLevel">Jenis log (Info, Peringatan, Kesalahan, Trance, Nonaktif)</param>
/// <param name="pengguna">Pengguna</param>
/// <param name="module">Modul</param>
/// <param name="function">Fungsi</param>
/// <param name="message">Pesan</param>
public static void WriteLog(LogType logType, pengguna string, modul string, fungsi string, pesan string)
{
mencoba
{
// Tipe LogType.Off tidak mencatat log
jika (logType == LogType.Off)
return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
// Satu file log (file .XML) setiap hari, nama file log adalah: JobLog yyyy-MM-dd.xml
string jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog " +
DateTime.Today.ToString("yyyy-MM-dd") + ".xml";
if (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
// Membaca log dari file .XML
t.ReadXml(jobLogFile);
//Tambahkan log
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
r.Pengguna = pengguna;
r.Datetime = DateTime.Sekarang;
r.Modul = modul;
r.Fungsi = fungsi;
r.Pesan = pesan;
t.AddJobLogRow(r);
// Simpan log ke file XML
t.WriteXml(jobLogFile);
}
menangkap (Pengecualian)
{}
}
3. Cara membaca log
/// <ringkasan>
/// Baca catatan
/// </ringkasan>
/// <returns>Mengembalikan DataTable untuk membaca log</returns>
JobLogDataSet statis publik.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = JobLogDataSet.JobLogDataTable() baru;
mencoba
{
// Dapatkan semua file log JobLog*.xml dari folder aplikasi
string[] jobLogFiles = Direktori.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly);
// Membaca setiap catatan log ke dalam log DataTable
foreach (string jobLogFile di jobLogFiles)
{
jika (File.Ada(jobLogFile))
{
//Baca semua file log ke dalam DataTable sementara
JobLogDataSet.JobLogDataTable t = JobLogDataSet.JobLogDataTable() baru;
t.ReadXml(pekerjaanLogFile);
//Impor catatan log ke log utama DataTable
foreach (JobLogDataSet.JobLogRow r di t)
jobLogDataTable.ImportRow(r);
}
}
// Mengembalikan log baca DataTable
kembalikan jobLogDataTable;
}
menangkap (Pengecualian)
{
kembalikan jobLogDataTable;
}
}
4. Dimanapun Anda perlu menulis log, panggil saja metode WriteLog secara langsung.