PDA

View Full Version : Tracer &Listener



champion
جمعه 19 بهمن 1386, 22:22 عصر
بچه ها سلام
در خصوص listener & Tracer کسی اطلاعی داره ؟ من میخوام ازش برای نوشتن یک کامپوننت یا کلاس برای Log استفاده کنم

Masoud_TB
شنبه 20 بهمن 1386, 08:38 صبح
کلاس Trace و کلاس Debug دو کلاس هستند که در هر دو در System.Diagnostics قرار دارند. این کلاس ها برای Log کردن اتفاقاتی که در برنامه شما اتفاق می افتد مورد استفاده قرار می گیرند.
فرض بفرمائید که ما یک صفحه Login داریم و می خواهیم کسانی که بعد از 3 بار تلاش موفق به ورود نمی شوند را در Log کنیم.


Trace.Warn("Trying to login with wrong password\r\nUserName:" + txtUserName.Text);
یا هر کد دیگری که دوست دارید بعد ها Administrator سیستم بتواند با بررسی آن ها در جهت نگهداری سیستم استفاده کند.

نکته ای که وجود دارد این است که کلاس Debug فقط در مورد Debug و کلاس Trace هم در مورد Debug و هم در مورد Release کار خود را انجام می دهند.

حالا این سوال پیش می آید که این اطلاعاتی که ما از طریق متد های این دو کلاس ثبت می کنیم کجا ذخیره می شود؟

برای اینکه بتوانیم مشخص کنیم که این اطلاعات را کجا نگهداری کنیم می توانیم از کلاس هایی که از کلاس TraceListener به ارث رفته اند یک شیء ساخته و اون رو داخل Listener های Trace یا Debug اضافه کنیم. به عنوان مثال شما می توانید این اطلاعات را داخل یک فایل Text یا داخل EventLog و یا ... ذخیره کنین.

دقت کنین که قبل اینکه شروع به ثبت اطلاعات کنین باید Listener خود را مشخص نمائید:


static void Main()
{
// در ابتدا برنامه Listener خود را مشخص میکنم
EventLogTraceListener m = new EvenLogTraceListener("myEventLogSource");
Trace.Listeners.Add(m);

Trace.Warn("My Trace Loggin Started");

}
البته شما می توانید Listener های خود را از طریق فایل Config نیز تنظیم نمائید برای اینکار باید داخل <system.diagnotistics> و بعد زیر <trace> و بعد <listener> خود را اضافه کنین:


<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="2">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="MyListener.log" traceOutputOptions="ProcessId, LogicalOperationStack, Timestamp, ThreadId, Callstack, DateTime" />
</listeners>
</trace>
</system.diagnostics>
</configuration>