代码之家  ›  专栏  ›  技术社区  ›  Martin Buberl

在ASP.NET中包含log4Net外部配置文件的最佳实践

  •  24
  • Martin Buberl  · 技术社区  · 15 年前

    在AssemblyInfo.cs文件中具有以下属性:

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log.config", Watch = true)]
    

    在Global.asax.cs中调用XmlConfigurator:

    protected void Application_Start()
    {
        XmlConfigurator.Configure(new FileInfo("Log.config"));
    }
    

    最好的做法是什么?

    2 回复  |  直到 14 年前
        1
  •  46
  •   Anton    15 年前

    启动时,调用:

    XmlConfigurator.Configure();
    

    <add key="log4net.Config" value="Log.config" />
    

    此特殊设置允许您更改日志配置,而无需重新编译。特别有助于在多个环境之间移动。

    例子

    \config\log4net\debug.config
    \config\log4net\staging.config
    \config\log4net\release.config
    \config\appSettings\debug.config
    \config\appSettings\staging.config
    \config\appSettings\release.config
    

    每个环境的应用程序和日志记录配置都是不同的。在应用程序设置中维护对日志记录配置的引用。

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

    更改环境只需更新Web.config中的appSettings文件。

    <appSettings file="config\appSettings\staging.config">
        ...
    </appSettings>
    
        2
  •  4
  •   pduncan    15 年前

    <add key="MyLog4NetConfigFile" value="%PUBLIC%\MyApp\MySettings.config"/>
    

    执行此操作以设置我的log4net配置:

    var configFile = ConfigurationManager.AppSettings.Get("MyLog4NetConfigFile");
    if( !string.IsNullOrEmpty(configFile))
    {
        configFile = Environment.ExpandEnvironmentVariables(configFile);
        XmlConfigurator.Configure(new FileInfo(configFile));
    }