Désactiver la journalisation de débogage lors de la publication dans Log4net

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

  •  03-07-2019
  •  | 
  •  

Question

Lorsque j'ai compilé mon application en mode de publication, j'ai constaté que Log4Net consigne toujours les informations de débogage. aucune idée de comment résoudre ce problème?

Ceci est mon fichier App.Config:

<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>

Est-ce que j'ai oublié quelque chose?

Était-ce utile?

La solution

Rien dans votre fichier App.Config n'indique à log4net de faire les choses différemment en mode publication ou débogage. Si vous souhaitez que la journalisation soit différente entre les deux versions, vous devez modifier votre fichier de configuration entre les deux versions.

Votre meilleur choix est probablement de créer un App.Config pour Release, un pour Debug, puis suivez les conseils de la question StackOverflow:

REMARQUE: la différence entre votre version et l'application de débogage App.Config correspond à la ligne suivante de la version de débogage

<level value="DEBUG" />

par rapport à la ligne suivante dans la version (ou bien sûr, vous pouvez choisir ERROR ou FATAL si vous le souhaitez):

<level value="INFO" />

Autres conseils

Peut-être essayer quelque chose comme ça à la place? Définissez le niveau minimal que vous souhaitez recevoir.

<level value="WARN" />

Si votre App.Config ressemble à ceci:

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

Vous pouvez modifier le niveau de journalisation par code (mettez le code dans 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top