Desactivar el registro de depuración durante el lanzamiento en Log4net

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Cuando compilé mi aplicación en modo de lanzamiento, descubrí que Log4Net todavía registra información de depuración; ¿Algúna idea de cómo arreglar esto?

Este es mi archivo 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>

¿Me perdí algo?

¿Fue útil?

Solución

No hay nada en su archivo App.Config para decirle a log4net que haga las cosas de manera diferente en el modo de liberación o depuración. Si desea que el registro sea diferente entre las dos compilaciones, debe cambiar su archivo de configuración entre las dos compilaciones.

Su mejor opción es probablemente crear una aplicación, configurar para liberar, una para depurar, y luego seguir los consejos de la pregunta de StackOverflow:

NOTA: La diferencia entre su lanzamiento y la aplicación de depuración. La configuración será la siguiente línea en la versión de depuración

<level value="DEBUG" />

versus la siguiente línea en la versión de lanzamiento (o, por supuesto, puede elegir ERROR o FATAL si lo desea):

<level value="INFO" />

Otros consejos

¿Quizás intente algo como esto en su lugar? Establezca el nivel mínimo que desee recibir.

<level value="WARN" />

Si su App.Config se ve así:

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

Puede modificar el nivel de registro por código (ponga el código en 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top