У меня есть проект Common
, который содержит log4net CustomAppender. Я ссылаюсь на проект во всех моих других проектах и настраиваю приложение log4net в app.config
. Все работает гладко, за исключением одного проекта, который не работает при попытке создать экземпляр Appender.
На выходе отображается следующая ошибка:
System.TypeLoadException: Could not load type [Common.Appenders.MyCustomAppender]. Tried assembly [log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a] and all loaded assemblies at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase) at log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase) at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement) log4net:ERROR Appender named [MyCustomAppender] not found.
Конфигурация log4net для всех проектов одинакова. app.config
содержит:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender">
<file value="log.txt" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="MyCustomAppender" />
</root>
</log4net>
</configuration>
Из кода я вызываю log4net.Config.XmlConfigurator.Configure()
. Если я вручную загружаю сборку с помощью Assembly.Load("Common")
перед вызовом конфигурации log4net для нерабочего проекта, все в порядке.
Любая идея, почему сборка не загружается, когда MyCustomAppender
создается через отражение? Как я могу это решить?
Попробуйте поместить имя сборки после имени типа
<appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender,Common">