En el inicio, llame a:
XmlConfigurator.Configure();
En su Web.config, especifique log4net.config en appsettings:
<add key="log4net.Config" value="Log.config" />
Esta configuración especial le permite cambiar la configuración del registro sin tener que recompilar . Especialmente útil para moverse entre múltiples entornos.
Ejemplo
Considérese la siguiente estructura archivo de proyecto:
\config\log4net\debug.config
\config\log4net\staging.config
\config\log4net\release.config
\config\appSettings\debug.config
\config\appSettings\staging.config
\config\appSettings\release.config
de aplicación y registro de configuraciones se distinguen para cada entorno. Las referencias a las configuraciones de registro se mantienen en la configuración de la aplicación.
\ config \ appsettings \ Debug.config:
<appSettings>
<add key="log4net.Config" value="config\log4net\debug.config" />
...
</appSettings>
\ config \ appsettings \ staging.config:
<appSettings>
<add key="log4net.Config" value="config\log4net\staging.config" />
...
</appSettings>
\ config \ appsettings \ Release.config :
<appSettings>
<add key="log4net.Config" value="config\log4net\release.config" />
...
</appSettings>
Cambiar entornos es una simple cuestión de actualizar el archivo appSettings en Web.config.
<appSettings file="config\appSettings\staging.config">
...
</appSettings>
Eso es un buen punto, pero realmente no me gusta esta cosa de configuración "mágica". Lo que hice ahora, es declarar tres claves con nombres de archivo en la aplicación Configuración de la Web.config para Debug, Stage, Release y uso de directivas de preprocesador en ApplicationStart para elegir automáticamente la correcta dependiendo de la configuración en la que se implementaron los ensamblados. ¿Cuál es su opinión? ¿Hay algo malo con esa solución? –
@Martin: agregué un ejemplo para ilustrar. El único inconveniente de su solución es la inflexibilidad de las versiones de compilación sobre las alteraciones de web.config. – Anton
thx, por su consejo! –