Рекомендуется включать внешний конфигурационный файл log4Net в ASP.NET. - PullRequest
24 голосов
/ 13 ноября 2009

Я видел как минимум два способа включить внешний файл конфигурации log4net в веб-приложение ASP.NET:

Наличие в вашем файле AssemblyInfo.cs следующего атрибута:

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

Вызов XmlConfigurator в Global.asax.cs:

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

Что было бы лучшим способом сделать это?

Ответы [ 2 ]

43 голосов
/ 13 ноября 2009

При запуске звоните:

XmlConfigurator.Configure();

В вашем файле Web.config укажите log4net.Config в appSettings:

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

Для изменения среды достаточно просто обновить файл appSettings в Web.config.

<appSettings file="config\appSettings\staging.config">
    ...
</appSettings>
4 голосов
/ 12 января 2010

Я был недоволен «волшебным» подходом к настройке, потому что я хотел указать свою конфигурацию в пути с переменной среды (% PUBLIC% \ MyApp \ MySettings.config).

Итак, у меня есть это в моем app.config:

<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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...