Domanda

Quando ho compilato la mia applicazione in modalità di rilascio, ho scoperto che Log4Net registra ancora le informazioni di debug; qualche idea su come risolvere questo?

Questo è il mio file 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>

Mi sono perso qualcosa?

È stato utile?

Soluzione

Non c'è nulla nel tuo file App.Config per dire a log4net di fare le cose in modo diverso in modalità di rilascio o debug. Se si desidera che la registrazione sia diversa tra le due build, è necessario modificare il file di configurazione tra le due build.

Probabilmente la soluzione migliore è creare un'App.Config per Release, una per Debug e seguire i consigli nella domanda StackOverflow:

NOTA: la differenza tra la tua versione e App.Config di debug sarà la seguente riga nella versione di debug

<level value="DEBUG" />

rispetto alla seguente riga nella versione di rilascio (o ovviamente puoi scegliere ERRORE o FATALE se lo desideri):

<level value="INFO" />

Altri suggerimenti

Forse prova qualcosa del genere invece? Imposta il livello minimo che desideri ricevere.

<level value="WARN" />

Se App.Config è simile al seguente:

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

È possibile modificare il livello di registro in base al codice (inserire il codice in 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top