PDA

View Full Version : ثبت لاگ برنامه



sa_2008
پنج شنبه 06 خرداد 1389, 20:38 عصر
چطور میشه لاگ یه برنامه رو ذخیره کرد.به طور مثال برنامه ای دارم که فقط از بانک جستجو انجام میده. یعنی کاربر تو برنامه بر اساس چند تا فیلد جستجو میکنه . حالا چطور میشه از جستجوهای کاربر لاگ گرفت. اگه کسی در برنامه ای اینکارو کرده نمونه بزاره ممنون میشم.

s.khoshfekran
پنج شنبه 06 خرداد 1389, 20:58 عصر
از هر روشی میتونی از برای ذخیره اطلاعات استفاده کنی!

sa_2008
پنج شنبه 06 خرداد 1389, 21:19 عصر
از هر روشی میتونی از برای ذخیره اطلاعات استفاده کنی!
مثلاً از روش استور پروسیجر insert. یا روش دیگه ای هست .

sa_2008
جمعه 07 خرداد 1389, 23:51 عصر
دوستان اگه کسی تا حالا لاگ برنامه رو ثبت کرده کمک کنه.

Amir Oveisi
شنبه 08 خرداد 1389, 01:36 صبح
دوست گرامی مشکل شما در نحوه log گرفتن هست؟ یا اینکه نه، log رو بلدین بگیرین و مشکلتون در ذخیره log ای که گرفتین هست؟
لطفا سوال خود را دقیق تر مطرح کنید تا سریعتر به جواب برسید

bpzone
شنبه 08 خرداد 1389, 08:38 صبح
با سلام
اگه در مورد نحوه گرفتن log برنامه ها توضیحی بدید، ممنون می شم
موفق باشید

razavi_university
شنبه 08 خرداد 1389, 08:59 صبح
یه کلاس static تعریف کنید و یک تابع برای ذخیره log در ان بنویسید و هر جایی که نیاز داشتید log بگیرید.
مثلا:


public static class AppLog
{
private static string txtFilePath = Application.StartupPath + "\\log.ter";
private static string xmlFilePath = Application.StartupPath + "\\log.xer";

public enum AppLogType
{
Handled,
UnHandled
}

/// <summary>
/// Add information about exception to log.txt file.
/// </summary>
/// <param name="exc">Exception to log.</param>
/// <param name="logType">Specifies that Exception is Handled or Unhandled</param>
public static void logTxtFile(Exception exc, AppLogType logType)
{
//checking that error file (error.err) is exist?
FileMode fmode;
StringBuilder strContetnt = new StringBuilder();


if (File.Exists(txtFilePath))
{
fmode = FileMode.Append;
}
else
{
fmode = FileMode.Create;
}

// Create or Append a "error.err" file to write app error on it.
using (FileStream fs = new FileStream(txtFilePath, fmode, FileAccess.Write))
{
// Create a writer and specify the encoding.
// The default (UTF-8) supports special Unicode characters,
using (StreamWriter strmWrt = new StreamWriter(fs, Encoding.UTF8))
{
// Write a decimal, string, and char.
strContetnt.Append("\n\n");
strContetnt.Append("\n\t datetime : " + DateTime.Now.ToString());
strContetnt.Append("\n EXCEPTION TYPE : " + logType.ToString());
strContetnt.Append("\n MESSAGE : " + exc.Message.ToString());
strContetnt.Append("\n SOURCE : " + exc.Source);
strContetnt.Append("\n STACKTRACE : " + exc.StackTrace.ToString());
strContetnt.Append("\n ================================================== ===================================");

strmWrt.WriteLine(strContetnt.ToString());
strmWrt.Flush();
strmWrt.Close();
}
}
}


این کد رو واسه ثبت خطاهای احتمالی مدیریت نشده نوشتم، میتونین بنا به نیازتون تغییرش بدین

sa_2008
شنبه 08 خرداد 1389, 09:09 صبح
دوست گرامی مشکل شما در نحوه log گرفتن هست؟ یا اینکه نه، log رو بلدین بگیرین و مشکلتون در ذخیره log ای که گرفتین هست؟
لطفا سوال خود را دقیق تر مطرح کنید تا سریعتر به جواب برسید
نه نمیدونم چطور باید از برنامه لاگ گرفت.ببینید تو فرم اصلی برنامم اینطوریه که اطلاعات مشخصات درخواست متقاضی شامل نام و نام خانوادگی و .... توسط اپراتور باید وارد بشه و تو همین فرم در جایی اپراتور باید بر اساس درخواست کاربر جستجویی را انجام دهد . حالا من می خوام هر بار ، هم اطلاعات مشخصات متقاضی و هم فیلدهایی رو که اپراتور جستجو کرده تو یک جدول ذخیره بشه .

RED-C0DE
شنبه 08 خرداد 1389, 10:42 صبح
نه نمیدونم چطور باید از برنامه لاگ گرفت.ببینید تو فرم اصلی برنامم اینطوریه که اطلاعات مشخصات درخواست متقاضی شامل نام و نام خانوادگی و .... توسط اپراتور باید وارد بشه و تو همین فرم در جایی اپراتور باید بر اساس درخواست کاربر جستجویی را انجام دهد . حالا من می خوام هر بار ، هم اطلاعات مشخصات متقاضی و هم فیلدهایی رو که اپراتور جستجو کرده تو یک جدول ذخیره بشه .
اگه ك برنامتون رو طوري نوشته باشين ك فقط از يك نقطه (مثلا يك تابع خاص) عمليات جستجو در بانك رو انجام مي دين (منطور اينه ك كلا عمليات مربوط ب بانك اطلاعيتون رو از چند تابع خاص انجام مي دين و نه اينكه هرجايي توي هر فرمي ك بخواين توي بانك مستقيما بنويسين و اينكارا رو انجام بدين) كارتون خيلي راحته؛ فقط كافيه يك method بنويسين ك مثلا يك سري اطلاعات (ك در اينجا مشخصات اپراتور و مواردي ك جستجو كرده) رو در فايلي در محل برنامه ذخيره كنه...

اگه برنامه اي نوشتين ك در هرجايي ك خواستين ، ب بانك ، connection باز كردين و كاراي بانك اطلاعاتي رو هرجايي اجرا كردين،كارتون يكم زياد مي شه، بايد در همه ي اين مكانها اين تابع (تابع ثبت log ك نوشتين) رو صدا بزنين و اطلاعات مورد نظر رو توش بنويسين :
مثلا روي فرم جستجو وقتي ك اپراتوري ك با نام كاربري operator1 وارد سيستم شده (با فرض داشتن يك سيستم Login در برنامه شما) نام خانوادگي رو براي جستجو در قسمت مشتريان وارد مي كنه و كليد جستجو رو مي زنه شما در فايل log ثبت كنين ك "عمليات جستجو در ليست مشتريان توسط اپراتور operator1 انجام شده ك فقط از قسمت "نام خانوادگي" براي اين عمل جستجو استفاده كرده...
حالا اين رو هرجور ك مي خواين بنويسين...