إيقاف تشغيل تسجيل التصحيح خلال الإفراج في Log4net

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

  •  03-07-2019
  •  | 
  •  

سؤال

عندما قمت بإعداد التطبيق في وضع الإصدار ، وجدت أن Log4Net لا تزال سجلات تصحيح المعلومات ؛ أي فكرة عن كيفية حل هذه المشكلة ؟

هذا هو بلدي التطبيق.ملف التكوين:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>

  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="C:\Documents and Settings\test\Application Data\Log.txt" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} - %m%n" />
      </layout>
    </appender>
  </log4net>

هل فاتني شيء ؟

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

المحلول

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

أفضل رهان هو على الارجح لإنشاء التطبيق واحد.التكوين من أجل الإفراج عن واحد من أجل التصحيح ، ثم اتبع النصائح في ستاكوفيرفلوو السؤال:

ملاحظة:الفرق بين الإصدار الخاص بك و تصحيح التطبيق.التكوين سوف يكون السطر التالي في debug الإصدار

<level value="DEBUG" />

مقابل السطر التالي في الإصدار (أو بالطبع يمكنك اختيار خطأ أو قاتلة إذا كنت تريد):

<level value="INFO" />

نصائح أخرى

وربما محاولة شيئا من هذا القبيل بدلا من ذلك؟ تعيين إلى أي مستوى أدنى كنت ترغب في الحصول.

<level value="WARN" />

إذا App.Config الخاص بك يبدو مثل هذا:

    <root>
      <level value="Info" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="RollingFileAppender" />
    </root>

يمكنك تعديل مستوى السجل عن طريق كود (ضع التعليمات البرمجية في Program.cs):


#if DEBUG
            log4net.Repository.ILoggerRepository RootRep;
            RootRep = LogManager.GetRepository(Assembly.GetCallingAssembly());

            XmlElement section = ConfigurationManager.GetSection("log4net") as XmlElement;

            XPathNavigator navigator = section.CreateNavigator();

            XPathNodeIterator nodes = navigator.Select("root/level");
            foreach (XPathNavigator appender in nodes)
            {
                appender.MoveToAttribute("value", string.Empty);
                appender.SetValue("Debug");
            }

            IXmlRepositoryConfigurator xmlCon = RootRep as IXmlRepositoryConfigurator;
            xmlCon.Configure(section);
#endif

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