PDA

View Full Version : ثبت لاگ در سایت به نحوی که تاخیر ایجاد نکند



ali_72
دوشنبه 04 آبان 1394, 12:12 عصر
سلام

زمانیکه کاربر فعالیتی در سایت را انجام میدهد مثلا خرید محصول
من لاگ این خرید را ثبت میکنم با log4net که یه ایمیل خرید کاربر هم برام ارسال میشه

این ثبت log بعد از تمام تراکنش های لازم و قبل از برگرداندن view به کاربر است
ولی من نمیخوام که به اندازه همین لاگ که شامل ارسال ایمیل به من هم هست در این اکشن تاخیر داشته باشم

آیا شما راه بهتری استفاده میکنید؟
لاگ های سایت خودتون رو چطور ثبت میکنید؟ با log4net؟ قسمت ارسال ایمیلش رو فعال میکنید؟ میشه تعیین کرد یه جا ایمیل بفرسته یه جا ایمیل نفرسته؟

ممنون

hakim22
دوشنبه 04 آبان 1394, 14:23 عصر
شما نباید ایمیل ارسال کنید مگر اینکه الزامی باشه ، به هر حال ارسال ایمیل یک عملیات وقتگیر است.

شما میتوانید لوگهارا در فاصله های زمانی مشخصی ایمیل کنید مثلا هر 15 دقیقه یکبار. یعنی باید عملیات ارسال ایمیل رو از عملیات اصلی جدا کنید.

ضمن اینکه حتما باید از Async استفاده کنید.

ali_72
چهارشنبه 06 آبان 1394, 14:07 عصر
شما نباید ایمیل ارسال کنید مگر اینکه الزامی باشه ، به هر حال ارسال ایمیل یک عملیات وقتگیر است.

شما میتوانید لوگهارا در فاصله های زمانی مشخصی ایمیل کنید مثلا هر 15 دقیقه یکبار. یعنی باید عملیات ارسال ایمیل رو از عملیات اصلی جدا کنید.

ضمن اینکه حتما باید از Async استفاده کنید.


من برای لاگ سایت از log4net استفاده میکنم. که ارسال ایمیل را از طریق وب کانفیگ تنظیم میکنم
و هیچ تنظیماتی بابت عدم ارسال ایمیل برای بعضی از لاگ ها یا تنظیم زمان برای این کار نداره یا من نمیدونم. ممنون میشم راهنمایی کنید

ممنون

pbm_soy
جمعه 08 آبان 1394, 22:28 عصر
آیا فروشگاه را خودتان کد نویسی کردید؟ ویا از فروشگاههای آماده استفاده کردید؟ حالا رایگان یا غیر رایگان و یا متن باز ویا غیر متن باز!

من log4net را فقط یکبار امتحان کردم! نمیدانم کارش درچه حد روی سرعت تاثیر میگذارد ولی طبق گفته دوستمون ارسال ایمیل کار اضافی است مخصوصا که به ازای هر خرید یک ایمیل میفرستد فکر میکنم زیاد باشد میتوانید همان فاصله زمانی خاص را انتخاب کنید برای گزارش فروشها توسط ایمیل و یا اینکه در روز ۳ یا ۴ بار ایمیل بفرستد!
لاگ کردن را خودتان کدنویسی میکردید بهتر بود و به این ترتیب فقط مواردی که لازم میبود و میخواستید را لاگ میکردید به این ترتیب سرعت کار هم بالاتر میرفت

hakim22
شنبه 09 آبان 1394, 07:32 صبح
شما در log4net میتوانید فیلتر طراحی کنید. هم از طریق کد و هم از طریق کانفیگ ، این فیلتر ها جلوی ارسال ایمیل در موارد خاص رو میگیرند (به طور کلی با فیلتر میتوانید از ثبت بعضی لوگها جلوگیری کنید - Ignore کنید) در داکیومنت مربوطه همه ی اطلاعات مورد نیاز شما توضیح داده شده .

من خودم از NLog برای ثبت لوگهای سیستمی (خطاها ، اطلاعات دیباگ، زمانهای اجرا ، Thread و ...) استفاده میکنم . برای ثبت رفتارهای کاربر ، مثل خرید و پرداخت و ... از یک از جدول ساده که خودم نوشتم استفاده میکنم که امکانات خاصی نداره.

NLog داکیومنت بهتر و نصب ساده تری داره ولی از نظر امکانات فرق زیادی با log4net نداره. شما میتوانید لوگها رو در دیتابیس با Code First هم ذخیره کنید. برای اینکار به قسمت Target داکیومنت نگاه کنید.

نکته ی آخر اینکه برای لوگ کردن در ASP MVC بهتره یک ActionFilter طراحی کنید و کدهای لوگ رو درون هر متد ننویسید. اگر چند پروژه ای (چند لایه) کار میکنید برای ثبت لوگها در لایه های غیر از وب هم بهتره روشهای Aspect-Oriented Programming رو پیاده کنید.

نیما عطایی
شنبه 09 آبان 1394, 11:54 صبح
سلام
همه لاگ ها رو بصورت Async بفرست توی یه جدول تو دیتا بیس
هر چند ساعت جدول رو بررسی کن حالا میخوای ایمیل کن میخوای هر کار دیگه ای

mehdin69
شنبه 09 آبان 1394, 18:36 عصر
Audit در sql برای ثبت log هست

ali_72
یک شنبه 10 آبان 1394, 10:39 صبح
شما در log4net میتوانید فیلتر طراحی کنید. هم از طریق کد و هم از طریق کانفیگ ، این فیلتر ها جلوی ارسال ایمیل در موارد خاص رو میگیرند (به طور کلی با فیلتر میتوانید از ثبت بعضی لوگها جلوگیری کنید - Ignore کنید) در داکیومنت مربوطه همه ی اطلاعات مورد نیاز شما توضیح داده شده .

من خودم از NLog برای ثبت لوگهای سیستمی (خطاها ، اطلاعات دیباگ، زمانهای اجرا ، Thread و ...) استفاده میکنم . برای ثبت رفتارهای کاربر ، مثل خرید و پرداخت و ... از یک از جدول ساده که خودم نوشتم استفاده میکنم که امکانات خاصی نداره.

NLog داکیومنت بهتر و نصب ساده تری داره ولی از نظر امکانات فرق زیادی با log4net نداره. شما میتوانید لوگها رو در دیتابیس با Code First هم ذخیره کنید. برای اینکار به قسمت Target داکیومنت نگاه کنید.

نکته ی آخر اینکه برای لوگ کردن در ASP MVC بهتره یک ActionFilter طراحی کنید و کدهای لوگ رو درون هر متد ننویسید. اگر چند پروژه ای (چند لایه) کار میکنید برای ثبت لوگها در لایه های غیر از وب هم بهتره روشهای Aspect-Oriented Programming رو پیاده کنید.

ممنون از همه دوستان
همه پروژه ها رو خودم مینویسم
تا ند وقت اخیر لاگ ها را در یک جدول ساده در پایگاه داده ثبت میکردم
که به نظرم تراکنش با دیتابیس برای ثبت لاگ ها کار جالبی نبود
به همین دلیل لاگ فور نت را انتخاب کردم
ممنون بابت پیشنهاد Nlog
حتما در موردش تحقیق میکنم
اما ممنون میشم در مورد فیلتری که فرمودید در log4net میشه برای ارسال ایمیل یا عدم ارسال ایمیل اعمال کرد راهنمایی کنید
ممنون