يمكن استخدام قواعد البيانات والملفات النصية وملفات XML وما إلى ذلك لتسجيل سجلات عمليات التطبيق. ما أقدمه هنا هو استخدام ملفات XML لتسجيل سجلات العمليات.
أعتقد أن استخدام XML لتسجيل سجلات العمليات له الفوائد التالية:
1. لا يشغل مساحة قاعدة البيانات ويمكنه حذف سجلات العمليات التاريخية حسب الرغبة.
2. يمكن لـ DataTable قراءة ملفات XML بسهولة، ويمكن أيضًا حفظ DataTable كملفات XML بسهولة.
3. من السهل عرض السجل. يمكنك فتح ملف XML مباشرةً لعرضه، أو يمكنك قراءته في DataTable ثم عرضه من خلال البرنامج.
طريقة استخدام ملفات XML لتسجيل سجلات العمليات في VS2005 هي كما يلي:
1. قم بإنشاء مجموعة بيانات: JobLogDataSet.xsd
يتضمن ذلك 6 حقول: TraceLevel (نوع السجل)، المستخدم (المستخدم)، DateTime (وقت التشغيل)، الوحدة النمطية (الوحدة النمطية)، الوظيفة (الوظيفة)، والرسالة (الرسالة).
إذا لم يكن ذلك كافيًا، فأضفه بنفسك (نوع السجل) يشير إلى المعلومات والتحذير والخطأ والنشوة والإيقاف.
2. إنشاء نوع السجل /// <الملخص>
/// نوع السجل
/// </الملخص>
نوع السجل العام
{
/// <الملخص>
/// معلومة
/// </الملخص>
معلومات،
/// <الملخص>
/// تحذير
/// </الملخص>
تحذير،
/// <الملخص>
/// خطأ
/// </الملخص>
خطأ،
/// <الملخص>
/// التتبع
/// </الملخص>
يتعقب،
/// <الملخص>
/// لا يوجد تسجيل
/// </الملخص>
عن
}
2. كيفية كتابة السجل
/// <الملخص>
/// سجل الكتابة
/// </الملخص>
/// <param name="traceLevel">نوع السجل (معلومات، تحذير، خطأ، نشوة، إيقاف)</param>
/// <param name="user">المستخدم</param>
/// <param name="module">الوحدة النمطية</param>
/// <param name="function">الوظيفة</param>
/// <param name="message">الرسالة</param>
سجل الكتابة الثابت العام (LogType logType، مستخدم السلسلة، وحدة السلسلة، وظيفة السلسلة، رسالة السلسلة)
{
يحاول
{
// النوع LogType.Off لا يسجل السجلات
إذا (logType == LogType.Off)
return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
// ملف سجل واحد (ملف XML) كل يوم، اسم ملف السجل هو: JobLog yyyy-MM-dd.xml
سلسلة jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog" +
DateTime.Today.ToString("yyyy-MM-dd") + ".xml";
إذا (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
// قراءة السجلات من ملف .XML
t.ReadXml(jobLogFile);
//أضف سجلاً
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
r.User = user;
r.Datetime = DateTime.Now;
r.Module = الوحدة النمطية؛
r.Function = function;
r.Message = message;
t.AddJobLogRow(r);
// حفظ السجل في ملف XML
t.WriteXml(jobLogFile);
}
قبض (استثناء)
{}
}
3. كيفية قراءة السجلات
/// <الملخص>
/// سجل القراءة
/// </الملخص>
/// <returns>إرجاع جدول البيانات لقراءة السجل</returns>
JobLogDataSet العامة الثابتة.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = new JobLogDataSet.JobLogDataTable();
يحاول
{
// احصل على كافة ملفات السجل JobLog*.xml من مجلد التطبيق
سلسلة[] jobLogFiles = Directory.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly);
// اقرأ كل سجل سجل في السجل DataTable
foreach (سلسلة jobLogFile في jobLogFiles)
{
إذا (File.Exists(jobLogFile))
{
// اقرأ جميع ملفات السجل في DataTable المؤقتة
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
// استيراد سجلات السجل إلى السجل الرئيسي DataTable
foreach (JobLogDataSet.JobLogRow ص في ر)
jobLogDataTable.ImportRow(r);
}
}
// إرجاع سجل القراءة DataTable
إرجاع jobLogDataTable؛
}
قبض (استثناء)
{
إرجاع jobLogDataTable؛
}
}
4. أينما تريد كتابة سجل، ما عليك سوى الاتصال بطريقة WriteLog مباشرةً.