Лесозаготовка с замком Виндзор, лесозаготовкой и log4net
Мой код:
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<appender name="MyLog" type="log4net.Appender.RollingFileAppender">
<file value="logs\log-file.txt" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="MyWayLog" />
</root>
</log4net>
</configuration>
LoggerInstaler.cs
public class LoggerInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));
}
}
MyLogger.cs
private static ILoggerFactory loggera = IoC.Container.Resolve<ILoggerFactory>();
private static ILogger logger = loggera.Create("MyLog");
public static ILogger Log
{
get { return logger; }
set { logger = value; }
}
Когда я использую Log.Error("some exception")
В файле журнала у меня есть другие журналы из некоторой другой библиотеки DLL. Я хочу только мои журналы, а не другое исключение DLL, только явно из вызова (Log.Error).
1 ответ
Вы должны использовать
<logger name="MyLog">
вместо
<root>
в log4net.config
Вы также можете использовать метод ToLog в рамках Виндзорской регистрации.
container.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config").ToLog("MyLog"));
Не уверен насчет вашего MyLogger.cs: из-за возможности windsor в этом нет необходимости... просто установите ILogger
как зависимость, когда вам это нужно