Как переименовать разделы в app.config? Название раздела не работает
Не возможно переименовать теги в app.config?
Если я использую следующее
...
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
...
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
...
все работает как положено (ведется регистрация с помощью Common Logging). Но если я изменяю имена разделов, конфигурация игнорируется, например, если я переименую группу, общую для mycommon.
<sectionGroup name="mycommon">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
...
<mycommon>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</mycommon>
...
Кто-нибудь знает хитрость?
2 ответа
Решение
Решение было найдено в самом коде...
public static class LogManager
{
/// <summary>
/// The name of the default configuration section to read settings from.
/// </summary>
/// <remarks>
/// You can always change the source of your configuration settings by setting another <see cref="IConfigurationReader"/> instance
/// on <see cref="ConfigurationReader"/>.
/// </remarks>
public static readonly string COMMON_LOGGING_SECTION = "common/logging";
private static IConfigurationReader _configurationReader;
Таким образом, вы можете создать новый класс, реализующий интерфейс IConfigurationReader, расширить / заменить LogManager (или заменить строку, но это требует перекомпиляции Common.Logging).
Спасибо за хорошо прокомментированный код Common.Logging... Я получил его после отладки.