ذخیره در فایل ini با سرعت زیاد
با سلام
من میخواهم لاگ اتفاقات برنامه رو در فایل ini ذخیره کنم. این ذخیره از چندین مرجع و با توجه به اتفاقاتی که در برنامه میافتد باید لاگ شود.
من با دستورات نوشتن در iniFile این کار را میکنم ولی وقتی همزمان چند اتفاق میافتد برخی از آنها در لاگ ثبت نمیشود.
دوستان کسی میتونه تو این زمینه راهنمایی کنه؟
نقل قول: ذخیره در فایل ini با سرعت زیاد
نقل قول:
نوشته شده توسط
seyed_farid
با سلام
من میخواهم لاگ اتفاقات برنامه رو در فایل ini ذخیره کنم. این ذخیره از چندین مرجع و با توجه به اتفاقاتی که در برنامه میافتد باید لاگ شود.
من با دستورات نوشتن در iniFile این کار را میکنم ولی وقتی همزمان چند اتفاق میافتد برخی از آنها در لاگ ثبت نمیشود.
دوستان کسی میتونه تو این زمینه راهنمایی کنه؟
اگر روش استاندارد رو استفاده کنید محاله ممکنه ثبت نشه.
کد ثبتتون رو قرار بدید.
بعدم میفرمایید از چند قسمت دارید لاگ رو ثبت میکنین.بیشتر توضیح بدید.یعنی چی از چند قسمت؟منظورتون اینه بصورت مالتی ترد دارید سیو میکنین؟
از چند جای برنامه دارید سیو میکنین؟
و در ضمن 2 راه دیگه هم دارید.
1-پیامهارو در یک لیست بریزید وقتی به تعدادی رسید در فایل ثبت کنید.
2- ثبت پیامهاتون رو توسط مسیجینگ انجام بدید تا خود ویندوز براتون صف بندی کنه.
نقل قول: ذخیره در فایل ini با سرعت زیاد
سلام.
ممنون از پاسختون
Procedure Log(s: String);
begin
with TIniFile.Create(ExtractFilePath(Application.ExeNam e)+'\fsmLog.log') do
begin
WriteString(FormatDateTime('YYYY-MM-DD', GetUTC), FormatDateTime('HH:nn:ss', GetUTC), s );
Free;
end;
end;
این کدم هست که با اتفاقات مختلف که در برنامه میافته لاگ میکنه.
مثلا اگه در یک لحظه چند جا با هم این پروسیجر رو فراخوانی کنند دیدم که بعضیهاش لاست شده.
از چند جا یعنی در جاهای مختلف برنامه ام با فراخوانی این پروسیجر مثلا خطاها رو لاگ میکنم.
راه دوم رو میشه بیشتر توضیح بفرمائید؟
ممنون از لطفتون
نقل قول: ذخیره در فایل ini با سرعت زیاد
با اجازه مدیر عزیز،
اگر شما دارید با استفاده از چندین ترد در فایل رایت می کنید، و رایت کردن در خود ترد ها داره انجام می شه، باید بدونید که فایل برای این سیستم مناسب نیست.
اگر ترد ها دارن روی ترد اصلی رایت رو انجام میدن، باید یا سینکرونایز کنید یا از روش هایی مثل پیام استفاده کنید.
اگر هم مولتی ترد نیست، که کار راحته و مشکلی نباید پیش بیاد.
منظور از چندین ترد، می تونه چندین اگزه جدا از هم هم باشه، در اینصورت باید دنبال دیتابیس باشید، مثلا اس کیو لایت https://sqlite.org/threadsafe.html