PDA

View Full Version : چگونه می تونم یه چیزی مثل log file تولید کنم؟



یک دوست
چهارشنبه 01 آبان 1387, 14:58 عصر
سلام دوستان
من تو برنامه ام یک کاربر عادی دارم که می تونه بره یه جای خاص و یه اطلاعات خاصی رو ثبت کنه
ویک کاربر مدیر دارم که می خوام بفهمه که این کاربر چه اطلاعاتی رو ثبت کرده
پس می خواهم وقتی کاربر کارش رو انجام می ده یه فایل متنی تولید بشه ودر سیستم ذخیره بشه تا مدیر بتونه بفهمه که این کاربر چه اطلاعاتی رو ثبت کرده
به عبارت بهتر یک log file می خوام اما نمی دونم چه جوری تولید وذخیره اش کنم
اگه میشه کمکم کنید.

naeeme
چهارشنبه 01 آبان 1387, 15:19 عصر
همونجایی که قرار اطلاعات خاص ثبت بشن، علاوه بر ذخیره سازی معمولی شما باید در فایل لاگ هم اون اطلاعات رو ذخیره کنین.
این فایل لاگ می تونه یه فایل ساده تکست باشه یا می تونه XML باشه. اما توصیه می کنم فایل XML به کار ببرید چون هم جستجو و مدیریتش ساده تر و هم در حجم بالا دچار مشکل نمیشین.
طریقه نوشتن فایل XML هم می تونین توی همین تالار با جستجو پیدا کنین. این (http://barnamenevis.org/forum/showthread.php?t=112955&highlight=xml) هم نگاه کنین اما با C# هست که می تونین کدش توی MSDN پیدا کنین.

در مورد اطلاعاتی که باید ذخیره کنین هم که خودتون دیگه بهتر می دونین

-------------------
یه ذره سوالتون ابهام هم داره. چون دقیقا مشخص نکردین کدوم قسمت رو مشکل دارین

یک دوست
چهارشنبه 01 آبان 1387, 19:47 عصر
ممنون از پاسختون
من می خوام یه فایل تکست ایجاد بشه میشه در این مورد بیشتر کمک کنید.

HamidNazari
چهارشنبه 01 آبان 1387, 20:14 عصر
ممنون از پاسختون
من می خوام یه فایل تکست ایجاد بشه میشه در این مورد بیشتر کمک کنید.

از کلاس StreamWriter در System.IO استفاده کنین .

یک دوست
چهارشنبه 01 آبان 1387, 23:01 عصر
خب کاش یه مقدار بیشتر من رو راهنمایی می کردین که دقیقا چه جوری میشه از این کلاس استفاده کرد؟؟
وای باز هم ممنون

HamidNazari
پنج شنبه 02 آبان 1387, 18:41 عصر
کامل​ترین اطلاعات تو MSDN موجوده : http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx

با اینحال یه توضیح مختصر میدم . شما تو کلاستون (فرم) احتیاج به یه آبجکت StreamWriter خواهید داشت که من اینجا به صورت فیلد تعریف کردم براتون .

System.IO.StreamWriter LogFile = new System.IO.StreamWriter("user.log", true, Encoding.UTF8);

که من از Constructorی استفاده کردم که اول string آدرس و نام فایل ، بعد بولین وضعیت append شدن فایل (یعنی نوشته​های جدید بهش اضافه بشن (true) و یا فایل overwrite بشه (false)) و انکودینگ فایل که در حالت پیش​فرض هم UTF-8 هست ، رو میگیره .

و در نهایت هرجا که احتیاج باشه متد WriteLine رو صدا می​کنم .

LogFile.WriteLine(DateTime.Now.ToString() + ": Something happened");
LogFile.Flush();

متد Flush حتماً باید صدا زده بشه . در صورتی که بخواین این کار رو نکنین باید پراپرتی AutoFlush مربوط به آبجکت LogFile رو true کنین ، تا هر زمان متدهای Write و WriteLine صدا زده شدن ، به طور خودکار آبجکت رو Flush هم بکنن .

LogFile.AutoFlush = true;