سؤال

ولدي خدمة ويندوز حيث الملف app.config والملفات log4net.config ومنفصلة. قطع الأشجار لا يعمل.

في ملف app.config بلدي، ولدي ما يلي في قسم:

<add key="log4net.Config" value="log4net.config"/>

وهذا يعمل إذا كان في قيمة I تحديد مسار مطلق إلى ملف log4net.config.

هل أنا بحاجة إلى توفير مسار مطلق إلى log4net.cong؟ كل من log4net.config وملف app.config في نفس المجلد مثل الملف القابل للتنفيذ.

وأي أفكار؟

وباراج

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

المحلول

وربما يكون ذلك مفيدا ( نقل التكوين Log4Net للخروج من الملف web.config مع ASP.NET 2.0 المواقع على شبكة الإنترنت ).

وهنا هي الأجزاء التي قد تكون مهتمة:

<اقتباس فقرة>   

وأخبر التطبيق إلى تكوين   log4net استخدام هذا الملف التكوين. هناك   هي في الواقع مركزين لهذا الغرض. أول،   وglobal.asax والثانية لل   الملف AssemblyInfo.cs. ملاحظة، أن معظم   في ذلك الوقت سوف تبدأ مع   global.asax الملف مع كافة التعليمات البرمجية   في النسق. لأي سبب من الأسباب، وفقط   وكانت وسيلة أستطيع الحصول على هذا العمل ل   كسر global.asax حتى استخدام   التعليمات البرمجية الخلفية ثم الحمار   الملف AssemblyInfo.cs. لذلك ينتهي   يبحث مثل هذا.

     

وglobal.asax:   <٪ @ لغة التطبيق = يرث "C #" = "GlobalAsax"٪>   global.asax.cs (في المجلد App_Code الخاص بك):

using System;
using System.Web;

public class GlobalAsax : HttpApplication
{
    // you may have lots of other code here
    void Application_Start(object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
    }
}
<اقتباس فقرة>   

والآن بعد أن لديك التطبيق الخاص بك   داعيا التكوين log4net، فإنك   يمكن تعيين سمة في التجميع الخاص بك   معلومات بحيث log4net يعرف إلى أين   ابحث عن الملف التكوين.   AssemblyInfo.cs (في App_Code الخاص بك   مجلد):

     

و[assembly:log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

     

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

لتأكد من أن log4net.config هناك دائما، إضافة إلى log4net.config csproject، وتعيينه إلى CopyAlways. يجب تقديمه في المجلد التصحيح.

ويمكنك استخدام برنامج نصي لنسخ كل شيء إلى مجلد الإفراج عنهم، أو إذا كنت تستخدم مشروع إعداد MS يدويا إضافة هذا الملف إلى المشروع. وبعد ذلك يتم إضافة مرجع.

نصائح أخرى

لخدمة Windows الدليل الحالي هو Windows \ SYSTEM32 - وXmlConfigurator.Configure () يستخدم FileInfo التي تتعامل مع المسارات النسبية نسبة إلى الدليل الحالي. حتى log4net تبحث عن ملف التكوين في ويندوز \ SYSTEM32.

وXmlConfiguratorAttribute من ناحية أخرى تستخدم BaseDirectory التطبيق، وهذا هو السبب في أنه يعمل دائما.

وبدلا من ذلك، يمكنك القيام التالية قبل استدعاء XmlConfigurator.Configure ():

System.IO.Directory.SetCurrentDirectory (AppDomain.CurrentDomain.BaseDirectory);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top