Вы можете использовать App.config для конфигурации log4net без создания собственной фабрики журналирования.Просто предоставьте файл App.config в качестве аргумента конструктору LoggingFacility
:
container
.AddFacility("logging",
new LoggingFacility(LoggerImplementation.Log4net,
System.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
)
В отличие от ответа Маурисио Шеффера, фабрика по умолчанию имеет значение ConfigureAndWatch
.Это прекрасно работает для меня с файлом App.config, хотя я не работаю на IIS или чем-то еще, что ограничивает разрешения.
Я делаю это в коде, потому что вы не можете надежно использовать ВиндзорКонфигурация XML для загрузки конфигурации log4net из App.config.Это связано с тем, что местоположение App.config можно изменить при создании нового AppDomain
.
Использование моего решения означает, что конфигурация файла журнала будет скомпилирована в ваш код.Но вы можете уменьшить это, используя установщик Windsor для настройки ведения журнала и указав установщик (или сборку установщика) из файла App.config:
public class LoggingInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container
.AddFacility("logging",
new LoggingFacility(LoggerImplementation.Log4net,
System.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
);
}
}
...
<castle>
<installers>
<install assembly="MyAssemblyName" />
</installers>
</castle>
Если в будущем (возможно, в ваших тестовых примерах) вам придется загружать конфигурацию ведения журнала из другого файла и не можете или не хотите перекомпилировать, просто измените Xml, чтобы он указывал на Установщики Windsor в другой сборке:
<castle>
<installers>
<install assembly="SomeOtherAssemblyName" />
</installers>
</castle>