كيفية القيام بما يلي: قم بإنشاء و يهيّئ المصادر تتبع
Trace المصادر can be تاريخ الإنشاء و initialized مع أو without the استخدم of تكوين ملفات. The recommended approach هو إلى استخدم تكوين ملفات إلى facilitate the reconfiguration of the traces produced بواسطة trace المصادر at تشغيل الوقت.
إلى إنشاء و يهيّئ a trace المصدر using a ملف تكوين
The following نموذج تعليمات برمجية هو intended إلى ينفذ في conjunction مع an تطبيق ملف تكوين (shown في step 2). The ملف تكوين initializes the إعدادات for the trace المصدر at the الوقت the تطبيق هو initialized. The تطبيق can dynamically تغيير the خصائص التعيين بواسطة the ملف تكوين إلى يمنع أي إعدادات specified بواسطة the مستخدم. For مثال, you might want إلى assure that حرج رسائل are دوماً sent إلى a ملف نصي, regardless of the الحالي تكوين إعدادات. يوضح نموذج تعليمات برمجية التالي تجاوز إعدادات ملف تكوين إلى ضمان الرسائل حرج يتم إخراج إلى رسائل التتبع. تغيير إعدادات ملف تكوين أثناء تطبيق هو تنفيذ لا يغير الإعدادات الأولية. إلى هل يجب أما إعادة تشغيل تطبيق أو برمجياً تحديث تطبيق الذي يستخدم في Refreshالأسلوب.
using System; using System.Diagnostics; using System.Threading; namespace TraceSourceApp { class Program { private static TraceSource mySource = new TraceSource("TraceSourceApp"); static void Main(string[] args) { Activity1(); // Change the event type for which tracing occurs. // The console trace listener must be specified // in the configuration file. First, save the original // settings from the configuration file. EventTypeFilter configFilter = (EventTypeFilter)mySource.Listeners["console"].Filter; // Then create a new event type filter that ensures // critical messages will be written. mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Critical); Activity2(); // Allow the trace source to send messages to listeners // for all event types. This statement will override // any settings in the configuration file. mySource.Switch.Level = SourceLevels.All; // Restore the original filter settings. mySource.Listeners["console"].Filter = configFilter; Activity3(); mySource.Close(); return; } static void Activity1() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); } static void Activity2() { mySource.TraceEvent(TraceEventType.Critical, 3, "Critical message."); mySource.TraceInformation("Informational message."); } static void Activity3() { mySource.TraceEvent(TraceEventType.Error, 4, "Error message."); mySource.TraceInformation("Informational message."); } } }
Create the following configuration file to initialize the TraceSource TraceSourceApp in the code example. ملف تكوين لتطبيق التي تتم استضافتها من قبل مضيف القابل للتنفيذ هو في نفس الدليل كالتطبيق. اسم ملف تكوين هو اسم تطبيق مع ملحق.config. على سبيل المثال الخاص بنا، TraceSourceApp.exe يمكن ربط مع يسمى ملف تكوين TraceSourceApp.exe.config. مثال ملف تكوين التالي يوضح كيفية يهيّئ lهوtener تتبع وحدة تحكم ومصدر lهوtener تتبع كاتب نص للتتبع التي هو بإنشائه في الخطوة السابقة. في addition إلى configuring the trace listeners, the ملف تكوين creates filters for كلاهما of the listeners و creates a المصدر تبديل for the trace المصدر. الثاني techniques are shown for إضافة trace listeners: إضافة the listener directly إلى the trace المصدر و إضافة a listener إلى the shared listeners مجموعة و then إضافة it حسب الاسم إلى the trace المصدر. The filters identified for the الثاني listeners are initialized مع different المصدر levels. This نتائج في some رسائل being written بواسطة فقط واحد of the الثاني listeners.
<configuration> <system.diagnostics> <sources> <source name="TraceSourceApp" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch"> <listeners> <add name="console" type="System.Diagnostics.ConsoleTraceListener"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning"/> </add> <add name="myListener"/> <remove name="Default"/> </listeners> </source> </sources> <switches> <add name="sourceSwitch" value="Warning"/> </switches> <sharedListeners> <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="myListener.log"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/> </add> </sharedListeners> </system.diagnostics> </configuration>
إلى يهيّئ المصادر التتبع ورسائل وعوامل التصفية دون ملف تكوين
أن الأداة بالتتبع من خلال مصدر تتبع الكامل من خلال تعليمات برمجية بدون استخدم من ملف التكوين. Th هو هو لا يوصي بالتدريب العملي، ولكن قد يكون هناك الحالات التي لم تكن تريد للاعتماد تشغيل ملفات تكوين لضمان التتبع.
using System; using System.Diagnostics; using System.Threading; namespace TraceSourceApp { class Program { private static TraceSource mySource = new TraceSource("TraceSourceApp"); static void Main(string[] args) { mySource.Switch = new SourceSwitch("sourceSwitch", "Error"); mySource.Listeners.Remove("Default"); TextWriterTraceListener textListener = new TextWriterTraceListener("myListener.log"); ConsoleTraceListener console = new ConsoleTraceListener(false); console.Filter = new EventTypeFilter(SourceLevels.Information); console.Name = "console"; textListener.Filter = new EventTypeFilter(SourceLevels.Error); mySource.Listeners.Add(console); mySource.Listeners.Add(textListener); Activity1(); // Set the filter settings for the // console trace listener. mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Critical); Activity2(); // Allow the trace source to send messages to // listeners for all event types. mySource.Switch.Level = SourceLevels.All; // Change the filter settings for the console trace listener. mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Information); Activity3(); mySource.Close(); return; } static void Activity1() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); } static void Activity2() { mySource.TraceEvent(TraceEventType.Critical, 3, "Critical message."); mySource.TraceInformation("Informational message."); } static void Activity3() { mySource.TraceEvent(TraceEventType.Error, 4, "Error message."); mySource.TraceInformation("Informational message."); } } }