أين هي أفضل مواقع لكتابة سجل خطأ في ويندوز ؟

StackOverflow https://stackoverflow.com/questions/191609

  •  08-07-2019
  •  | 
  •  

سؤال

حيث أن تكتب خطأ في ملف سجل قول ErrorLog.txt, في ويندوز ؟ نضع في اعتبارنا الطريق سوف تحتاج إلى أن تكون مفتوحة الأساسية للمستخدمين الملف أذونات الكتابة.

أنا أعرف سجل الأحداث هو موقع محتمل أخطاء الكتابة ، ولكن هل يعمل على "المستخدم" مستوى الأذونات ؟

تحرير:أنا استهداف ويندوز 2003, ولكن كنت يطرح السؤال في مثل هذه الطريقة أن يكون العامة "التوجيهي" حيث أن كتابة سجلات الخطأ.
كما سجل الأحداث, لدي مشاكل قبل في ASP.NET التطبيق حيث أردت أن سجل إلى سجل أحداث Windows, ولكن لدي قضايا الأمن مما تسبب لي الحزن.(أنا لا أذكر المسائل لدي, ولكن تذكر وجود لهم.)

هل كانت مفيدة؟

المحلول

هل تعتبر تسجيل عارض الأحداث بدلا من ذلك؟ إذا كنت تريد أن تكتب السجل الخاص بك، أقترح المستخدمين المحليين دليل إعداد التطبيق. جعل دليل المنتج تحت الانقاض. انها مختلفة عن نسخة مختلفة من Windows.

في ويندوز فيستا، لا يمكنك وضع مثل هذه الملفات تحت ج: \ ملفات البرنامج. واجهت الكثير من المشاكل معها.

في .NET، يمكنك معرفة هذا المجلد مع هذا:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

وسجل الأحداث بسيطة نسبيا للاستخدام أيضا:

http://msdn.microsoft.com/en -US / مكتبة / system.diagnostics.eventlog.aspx

نصائح أخرى

ملفات نصية كبيرة خادم التطبيق (قلت ويندوز 2003).يجب أن يكون ملف سجل منفصل لكل ملقم التطبيق والموقع هو حقا مسألة الاتفاقية الاتفاق مع المسؤولين.E. g.بالنسبة ASP.NET تطبيقات رأيت في كثير من الأحيان وضعها على قرص منفصل عن تطبيق إطار بنية المجلد الذي يحاكي بنية الدليل الظاهري.

على تطبيقات العميل, عيب واحد من الملفات النصية هو أن المستخدم قد تبدأ عدة نسخ من التطبيق الخاص بك (إلا إذا كنت قد اتخذت خطوات محددة لمنع هذا).بحيث يكون لديك مشكلة الخلاف إذا مثيلات متعددة محاولة الكتابة إلى ملف السجل نفسه.لهذا السبب كنت دائما تفضل سجل أحداث Windows على تطبيقات العميل.التحذير واحد هو أن عليك أن تكون مسؤول لإنشاء سجل الأحداث - هذا يمكن القيام به على سبيل المثالمن خلال حزمة "الإعداد".

إذا كنت تستخدم ملف أقترح استخدام المجلد البيئة.SpecialFolder.المحليةApplicationData بدلا من SpecialFolder.ApplicationData كما اقترح من قبل الآخرين.LocalApplicationData على القرص المحلي:كنت لا تريد مشاكل في الشبكة يمنعك من الدخول عندما يكون المستخدم التشكيل الجانبي المتجول.عن WinForms تطبيق استخدام التطبيق.LocalUserAppDataPath.

في كلتا الحالتين, وأود أن استخدام ملف تكوين تقرر أين السجل ، بحيث يمكنك بسهولة تغيير ذلك.E. g.إذا كنت تستخدم Log4Net أو إطار مماثل ، يمكنك بسهولة تكوين ما إذا كان السجل إلى ملف نصي, سجل الأحداث على حد سواء أو في أي مكان آخر (على سبيل المثالقاعدة بيانات) دون تغيير التطبيق الخاص بك.

وشخصيا، أود أن أقترح استخدام سجل الأحداث ويندوز، وانه لشيء رائع. إذا كنت لا تستطيع، ثم إرسال الملف إلى الدليل ApplicationData أو ProgramData (بيانات التطبيق لكافة المستخدمين على نظام التشغيل Windows XP) الدليل.

وموقع القياسية (ق) هي:

C:\Documents and Settings\All Users\Application Data\MyApp

أو

C:\Documents and Settings\%Username%\Application Data\MyApp

و(الملقب %UserProfile%\Application Data\MyApp) التي من شأنها أن تطابق <م> مستوى المستخدم شرط الحصول على إذن. يفصل أيضا السجلات التي تم إنشاؤها من قبل مستخدمين مختلفين.

<ع> استخدام <م>. NET وقت التشغيل، وهذه يمكن أن يبنى على النحو التالي:

AppDir=
  System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

أو

AppDir=
  System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

وتليها:

MyAppDir = IO.Path.Combine(AppDir,'MyApp')

و(الذي، كما نأمل، خرائط <م> فيستا الشخصية أيضا).

وسجل الأحداث ويندوز هو بالتأكيد وسيلة للذهاب لتسجيل الأخطاء. كنت لا تقتصر على "تطبيق" تسجيل حيث أنه من الممكن لخلق هدفا سجل جديد (مثل "يا تطبيق"). وهذا قد تحتاج إلى القيام به كجزء من الإعداد وأنا لست متأكدا إذا كان يتطلب امتيازات إدارية أم لا. هناك مثال مايكروسوفت في C # في http://support.microsoft.com/kb/307024 .

وأيضا ويندوز 2008 سجل الأحداث الشحن التي يمكن أن تكون تماما مفيد مع تطبيقات الخادم.

وأنا أتفق مع لو على هذا، لكني أفضل أن وضع هذا الأمر في ملف تكوين مثل قال جو. يمكنك استخدام

وقيمة ملف = "$ {APPDATA} /Test/log-file.txt"

و( "اختبار" يمكن أن يكون كل ما تريد، أو إزالتها تماما) في ملف التكوين، والذي يسبب ملف السجل المراد كتابتها إلى "/ المستندات والإعدادات / LoginUser / تطبيق البيانات / اختبار "على نظام التشغيل Windows XP و" / المستخدمين / LoginUser / APPDATA / التجوال / اختبار على ويندوز فيستا.

وأنا مجرد إضافة هذا كما قضى الطريقة الكثير من الوقت يحسب كيفية جعل هذا العمل على ويندوز فيستا ...

وهذا يعمل كما هو مع تطبيقات ويندوز. استخدام قطع الأشجار في تطبيقات الويب، وجدت دخول بلوق فيل هاك على هذا وجود موارد كبيرة: http://haacked.com/archive/2005/03/07/ConfiguringLog4NetForWebApplications. ASPX

و٪ TEMP٪ هو دائما موقع جيد للسجلات أجد.

والذهاب ضد الحبوب هنا - ذلك يعتمد على ما عليك القيام به. في بعض الأحيان تحتاج إلى التلاعب بالنتائج، لذلك log.txt هو الطريق للذهاب. انها بسيطة، قابلة للتغيير، وسهلة للبحث.

ونأخذ مثالا من جويل. سوف Fogbugz إرسال سجل / تفريغ رسائل الخطأ عبر HTTP إلى الخادم الخاص بهم. هل يمكن أن تفعل الشيء نفسه وليس لديها ما يدعو للقلق حول حقوق وصول المستخدم على مسعاهم.

وأنا شخصيا لا أحب استخدام سجل الأحداث Windows حيث أنا الآن لأننا لم يكن لديك الوصول إلى خوادم الإنتاج، لذلك هذا يعني أننا بحاجة إلى طلب الوصول في كل مرة أردنا أن ننظر إلى أخطاء. وهي ليست عملية سريعة للأسف، لذلك haulted تماما استكشاف الأخطاء وإصلاحها عن طريق الانتظار لشخص آخر. أنا أيضا لا أحب أنها نوع من تضيع داخل تلك من التطبيقات الأخرى. بالتأكيد يمكنك ترتيب، ولكن هذا مجرد قليلا من nucance التمرير لأسفل. ما كنت تستخدم في نهاية المطاف كونها مزيجا من تفضيل شخصي جانب جنبا إلى جنب مع القيود المفروضة على البيئة التي تعمل فيها. (ملف سجل، سجل الأحداث، أو قاعدة بيانات)

وضعه في دليل التطبيق. سوف يحتاج المستخدمون الوصول إلى المجلد لتشغيل وتنفيذ التطبيق، ويمكنك التحقق من وصول الكتابة على بدء تشغيل التطبيق.

وسجل الأحداث هو الألم لاستخدامها لاستكشاف الأخطاء وإصلاحها، ولكن يجب عليك أخطاء لا يزال آخر كبيرة هناك.

وتحرير - يجب أن ننظر إلى كتل تطبيق MS للتسجيل إذا كنت تستخدم .NET. أنها حقا جعل الحياة سهلة.

وجيز الكرمة القتلة. في المرة القادمة سوف لا حتى نقدم اقتراحا عندما يضع الملصق حتى وظيفة كاملة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top