Message Logging در WCF
سه شنبه 18 آبان 1395WCF کلا درباره مدیریت پیام ها از سیستم های متفاوت است . از نگاه یک developer ، شاید نیاز باشد که message logging پیام مورد نظر را پیدا کند . برای مثال ، شاید شما میخواهید برای اهداف debugging پیامی را که در لایه transport تصحیح شده است را ، بدانید . در این مقاله به بررسی 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 به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .
- WCF
- 2k بازدید
- 1 تشکر