log4net с простым инжектором DI
Я пытаюсь использовать Simple Injector (+ интеграция MVC) v 2.5.2. для приложения MVC 4 и мне нужно также отслеживать / регистрировать производительность (выполнение) (модулем log4net). Текущая реализация (во время выполнения) создает файл log4net по указанному пути, но не записывает в него ни одной строки текста (когда я его отлаживал, все прошло без ошибок до конца_logger.Info ( "сообщение") ).
Кто-нибудь пытается использовать Simple Injector DI для log4net?
Как я зарегистрировал модуль log4net:
public static class LoggingModule
{
public static void RegisterServices(Container container)
{
string log4NetConfigFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(log4NetConfigFile));
var logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
container.RegisterSingle(logger);
}
}
И в Global.asax
LoggingModule.RegisterServices(container);
Файл конфигурации Log4net выглядит так (я не думаю, что есть какие-либо проблемы):
<log4net>
<appender name="PerformanceLogFile" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="..\Performance\PricingManager" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="_yyyy-MM-dd.lo\g" />
<param name="MaxSizeRollBackups" value="10" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
<logger name="SoftTech.PricingEngine.PricingService.PerformanceStatisticLoggerWithAPI">
<level value="ALL" />
<appender-ref ref="PerformanceLogFile" />
</logger>
</log4net>
И чтобы включить / выключить ведение журнала я использовал:
private static void RegisterIPerformanceStatisticLogger(Container container)
{
if (ShouldLogPerformance())
{
container.Register<IPerformanceStatisticLogger, PerformanceStatisticLogger>(WebLifestyle);
}
else
{
// do nothing
container.Register<IPerformanceStatisticLogger, DisabledPerformanceStatisticLogger>(WebLifestyle);
}
}
И PerformanceStatisticLogger или DisablePerformanceStatisticLogger устанавливают
IsLoggingEnabled = true; // | false
IsAPITraceEnabled = false; // | true
Что я делаю не так? Сдается мне проблема способа впрыска. Спасибо за любой совет