Message Logging در WCF

سه شنبه 18 آبان 1395

WCF کلا درباره مدیریت پیام ها از سیستم های متفاوت است . از نگاه یک developer ، شاید نیاز باشد که message logging پیام مورد نظر را پیدا کند . برای مثال ، شاید شما میخواهید برای اهداف debugging پیامی را که در لایه transport تصحیح شده است را ، بدانید . در این مقاله به بررسی Message Logging در WCF خواهیم پرداخت .

Message Logging در WCF

البته ، توصیه نمیشود که در محیط برنامه تولیدی گزینه ای برای فعال سازی Message Logging وجود داشته باشد . در این مقاله ، هدف ما بررسی گزینه های مختلف در دسترس برای log کردن پیام ها و چگونگی کنترل Message Logging میباشد . 

Message Logging :
زمانی که اسم Message Logging را میشنوید چه چیزی به ذهن شما خطور میکند ؟ احتمالا از خود میپرسید،کجا ما نیاز به log داریم و چه پیام هایی در اینجا log میشوند . بله ، "کجا" قبل از "چه" می‌آید . پس ، جواب در اینجاست . مستمع درباره "کجا ما نیاز به log داریم" احتیاط میکند ، و Message Logging در مورد " چه پیام هایی در اینجا log میشوند" احتیاط خواهد کرد . این دو مولفه پتانسیل لازم برای log کردن پیام شما را دارند ، <System.Diagnostics> شما را قادر به داشتن کنش و واکنش با event logs و Performance counters خواهد کرد . 


ویژگی های زیر جزئیاتی میباشند که که نیاز است شما آنها را در <System.Diagnostics> بیان کنید :

• Source
• Switch value or Trace Level
• Type
• (Initialize Data (Path of the log file

Switch Value - پیمایش تنظیمات در Switch value انجام می‌شود . به سطوح پیمایش زیر توجه کنید :

1. off - پیمایش غیر فعال می‌شود و پیمایش را نادیده می‌گیرد . 
2. Critical - مشکلات بحرانی همانند خراب شدن برنامه یا بسته شدن ناگهانی ، در سرویس برای مشکلات بحرانی ، پیمایش ایجاد خواهد شد . 
3. Error - تمام موارد استثنا را ثبت میکند . 
4. Warning - پیمایش برای هشدار هایی که نشان میدهند در آن قسمت ممکن است مشکلی بوجود آید ، تشکیل خواهد شد . 
5. information - پیمایش برای اجراهای موفقیت امیز برنامه ، ایجاد خواهد شد . 
6. Verbose  - معمولا برای اهداف debugging استفاده می‌شود . این امکان پیمایش low-level یا همان سطح پایین را فراهم می‌آورد . 
7. Activity Tracing - برای ارتباطات بین مولفه های یک برنامه ، پیمایش ایجاد خواهد شد . 



در تصویر بالا ، شما منبعی تحت عنوان Message logging پیدا خواهید کرد . این بدان معناست که diagnostics با System.ServiceModel.MessageLogging برای ثبت event data ، کنش و واکنش دارد .  IntializeData آدرس محلی را میگیرد که ما میخواهیم داده ها را در آنجا log کنیم . XmlWriteTraceListener پیمایش را در فرمت XML ایجاد خواهد کرد .

زمانی که کار ما با قسمت diagnostics به اتمام رسید ، برای تکمیل پیکربندی ، همانطور که در تصویر زیر مشاهده میکنید به سراغ قسمت Message Logging میرویم .  



• LogEntireMessage  -  برای Log کردن body و header تمام پیام ها مورد استفاده قرار میگیرد . مقدار پیش فرض آن False است . 

• maxMessagesToLog - حداکثر تعداد پیام هایی که میتواند log شود چقدر است ؟ 1000 پیام ، اگر تعداد پیام ها از این فراتر برود دیگر log نمیشوند.

•  maxSizeOfMessageToLog : حداکثر سایز پیام هایی که log میشوند چقدر است ؟ حداکثر 2000 بایت . این به شما این امکان را میدهد که سایز فایل خود را کنترل کنید . 

• logMessagesAtServiceLevel : برای log کردن پیام هایی که در مورد وارد کردن سرویس ، و یا ترک کردن یک سرویس است ، به کار میرود . 

• logMessagesAtTransportLevel : آیا پیامی را که آماده کدگذاری شدن و انتقال از طریق سیم است را میخواهید ؟ آیا پیامی را که آماده کدگشایی است و منتقل شده است را میخواهید ؟

• logMalFormedMessages : معنیِ Malformed Messages چه می‌باشد ؟ این تماما در مورد پیام های WCF است که توسط WCG در حین اجرا ، reject شده اند . با استفاده از این مولفه میتوانید پیام های reject توسط WCF را Log کنید . 

به تصویر زیر از app.config توجه فرمایید :  


خروجی برنامه بصورت زیر خواهد بود :




خلاصه :
برای تحلیل و log کردن رخداد های سمت سرور ، Message logging یک گزینه فوق العاده در WCF میباشد . در اینجا دو چیز است که ما نیاز به تعریف آن در Message Logging داریم ،Listener (برای نوشتن داده ها در یک مکان خاص)
و Message Logging (برای log کردن داده ها در مرحله سرویس و مرحله انتقال )

 در صورت تمایل میتوانید به صورت رایگان آموزش WCF به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • WCF
  • 2k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید