السلام عليكم ورحمة الله وبركاته
أريد في برنامجي عمل لوج فايل بحيث أرى اي تعديل يحدث على الداتا بيز كل ثانية من تعديل او حذف او اضافة
فهل يعرف الفكرة في عمل الـ LogFile
السلام عليكم ورحمة الله وبركاته
أريد في برنامجي عمل لوج فايل بحيث أرى اي تعديل يحدث على الداتا بيز كل ثانية من تعديل او حذف او اضافة
فهل يعرف الفكرة في عمل الـ LogFile
السلام عليكم
بإمكانك إستعمال الدالة لكتابة البيانات في الملف الذي تريده وبكيفية متكررة
public static void println(String msg)
{
StreamWriter sw = File.AppendText(FileName_Out);
sw.WriteLine(msg);
sw.Close();
}FileName_Out : إسم الملف الذي تريد الكتابة فيه
ومن المستحسن إستعمال ملفان أحدهما لتسجيل المخرجات المنتظرة والآخر للإستثناآت
public static void printStackTrace(Exception msg)
{
StreamWriter sw = File.AppendText(FileName_Stack);
sw.WriteLine(msg);
sw.Close();
}في كلتا الدالتين يتم تحدث محتويات الملفات لذلك ينبغي التأكد من وجودهما وإنشأهما في حال عدم العثور عليهما.
FileName_Stack: : إسم الملف الذي تريد الكتابة فيه
public void creater(string FileName_Stack, string FileName_Out)
{ // Create the files SystemOut and stack
try
{
StreamWriter swStack = File.CreateText(FileName_Stack);
StreamWriter sw = File.CreateText(FileName_Out);
sw.Close(); swStack.Close();
}
catch (UnauthorizedAccessException UNexp) { MessageBox.Show(UNexp.Message); }
}بإمكانك مناداة هذه الدالة داخل الدالةInitializeComponent للواجة الرئيسة لكود البرنامج. علما أن بهذه الطريقة سيتم إنشاء ملف جديد وحذف السابق في كل مرة.
وعليكم السلام ورحمة الله وبركاته
اشكرك أخ Ben_Laiid
الكود ده اضن بيقرا من ملف وبيكتب في ملف آخر
بس أنا محتاجة ازاي اقرا التعديل الي حصل على الداتا بيز كل ثانية واعرضها بمعنى يظهر لي كل مستخدم امتى دخل وامتى خرج و عمل ايه
وشكرا جدا لحضرتك
هل لديك التحكم في عمليات الدخول والخروج والخ ؟
أقصد كيف يدخل المستخدمون إلى قاعدة البيانات ؟ كيف يعدلون البيانات ؟ كيف يحذفون البيانات ؟ هل من خلال تطبيقك ؟ اذا كان الأمر كذلك فاكتب كود يسجل هذه العمليات في ملف نصي مثلا وضع الكود في كل الـ Methods اللي عندك.
ان كان المستخدمون يدخول على قاعدة البيانات مباشرة بدون استخدام برنامجك ويقومون بالعمليات المختلفة أيضا مباشرة بدون استخدام برنامجك, فالأمر برمجيا أظنه صعب ! لا أدري كيف يمكن استعمل ملف الـ LOG الخاص بقاعدة البيانات لاستخراج هذه المعلومات منه ! كل ما أعرفه أنه يمكنك القراءة من الـ Event Logs الخاص بالويندوز (التي يمكن مشاهدتها من الـ Event Viewer ) لمعرفة بعض الأحداث التي تحدث على قاعدة البيانات مثل عمليات الدخول الخاطئ والخ. يمكنك أيضا استخدام الـ Performance Counters مثل SQL Server Databases و SQL Server Errors و الخ في مراقبة ما يحدث في قاعدة البيانات.
من خلال برنامجي طبعا بس مش عارفة ماذا تقصد بالضبط !!!
السلام عليكم
اقتباسالكود ده اضن بيقرا من ملف وبيكتب في ملف آخر
:blink:
Log file هو ملف تكتب فيه بصفة متكررة وكل مرة معطيات من جزء ما من الكود لذلك عليك أولا إنشاء الملف ثم فتحه كل مرة الكتابة فيه ثم إغلاقه
تقم بإستدعاء الدالة printlnإثر الحدث sqlConnectمثال بالشكل التالي
println("Connection at", DateTime.Now.ToString("y"));ثم عند تسجيل بيانات جديدة وعند محاولة المستعمل الدخول ...
نعم, اذا كنت تستخدم مثلا SqlDataSource في أداء المهام, يمكنك التعامل مع أحدث Deleting, Inserting, Selecting, Updating و Deleted , Inserted, Selected, Updated !
وفي كل حدث من هذه تلك الأحداث استدعي دالة كالتي كتبها الأخ Ben_Laiid لتسجيل ما يحدث في ملف مثلا. ويمكنك وأنت داخل الدوال التي تتعامل مع تلك الأحداث معرفة بعض المعلومات مثل الـ Command والـ Connection والخ.
للتعامل مع حالة الحذف, مثلا, يمكن التعامل مع حدث Deleting هكذا :
protected void YourDataSource_Deleting(object sender, SqlDataSourceCommandEventArgs e)
{
StringBuilder log = new StringBuilder();
log.Append("User is trying to delete something.\r\n");
log.Append("Command is: ");
log.Append(e.Command.CommandText);
log.Append(Environment.NewLine);
log.Append("Connection is: ");
log.Append(e.Command.Connection.ConnectionString);
// if you are interested in paramaters, you can use e.Command.Parameters..
println(log.ToString());
}ثم التعامل مع حدث Deleted هكذا :
protected void YourDataSource_Deleted(object sender, SqlDataSourceStatusEventArgs e)
{
StringBuilder log = new StringBuilder();
if (e.Exception != null)
{
log.Append("Number of deleted rows: ");
log.Append(e.AffectedRows);
println(log.ToString());
}
else
{
log.Append("EXCEPTION: row(s) have not been deleted!");
log.Append("Command is: \r\n");
log.Append(e.Command.CommandText);
log.Append(Environment.NewLine);
log.Append("Exception is: \r\n");
log.Append(e.Exception.Message);
// you may set e.ExceptionHandled = true and direct the user to a custom error-page.
}
println(log.ToString());
}ملحوظة: الدالة println هي التي كتبها الأخ Ben_Laiid.
ملحوظة: يمكنك كتابة دالتين فقط لكتابة الـ Log للتعامل مع معظم الأحداث, واحده تستقبل أوبجكت و SqlDataSourceStatusEventArgs للتعامل مع الأحداث التي تنتهي بحرفين ed مثل Deleted و Inserted والخ, وأخرى تستقبل أوبجكت و SqlDataSourceStatusEventArgs للتعامل مع الأحداث التي تنتهي بـ ing مثل Inserting و Deleting والخ.
تم تعديل هذه المشاركة بواسطة معتز شمس في 22 يونيو 2007 في 18:25 — السبب: كدا !
السلام عليكم ورحمة الله وبركاته
شكرا جزيلا للأخ Ben_Laiid والأخ معتز على المساعدة وجاري المحاولة
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…