log4net: ошибка при загрузке пользовательского приложения

Я расширил AppenderSkeleton для создания настраиваемого приложения под названием HTTPAppender, но что-то не так со ссылкой на него в XML-файле. Log4Net явно не может найти мой пользовательский аппендер. Есть ли способ ссылаться на него из файла xml, чтобы указать на мой проект, или мне нужно будет добавить исходный код моего пользовательского приложения в log4net, чтобы он был упакован в log4net.dll?

При отладке я получаю следующую ошибку в окне «Немедленное»:

log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [HTTPAppender] of type [HTTPAppender.HTTPAppender,HTTPAppender]. Reported error follows.
System.IO.FileNotFoundException: Could not load file or assembly 'HTTPAppender' or one of its dependencies. The system cannot find the file specified.
File name: 'HTTPAppender'
   at System.RuntimeTypeHandle._GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
...etc

Вот раздел log4net XML-файла:

<log4net> <appender name="HTTPAppender" type="HTTPAppender.HTTPAppender,HTTPAppender"> <evaluator type="log4net.Core.LevelEvaluator,log4net"> <threshold value="WARN"/> </evaluator> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="#%level - %message" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="HTTPAppender" /> </root> <logger name="log4netErrorLog" > <level value="DEBUG" /> <appender-ref ref="HTTPAppender" /> </logger> </log4net>


person calico-cat    schedule 22.01.2010    source источник


Ответы (6)


Если вы используете какие-либо нестандартные сборки, поместите их в каталог приложения вместе со своей сборкой. Если это не помогает, попробуйте дать своей сборке строгое имя и использовать полное имя в файле конфигурации log4net. вы также можете попробовать поместить его в GAC.

person Konrad    schedule 22.01.2010
comment
Этот другой вопрос объясняет немного больше: stackoverflow.com/ questions / 20082614 / - person BrunoJCM; 20.10.2017

я думаю это поможет тебе

http://weblogs.asp.net/tgraham/archive/2007/05/02/loading-the-assembly-for-a-custom-log4net-appender.aspx

person nanek    schedule 18.07.2011

Я бы предположил, что сборку найти не удастся. Действительно ли имя сборки «HTTPAppender» и находится ли она на том же пути, что и вызывающая сборка?

person Stefan Egli    schedule 22.01.2010

У меня была такая же проблема. Если в вашем проекте пользовательского приложения используется определенный log4net.dll, а в вашем проекте, который будет использовать ваш пользовательский приложение, используется другой log4net.dll, он не сможет его найти.

person Bruno P    schedule 20.09.2014

Я тоже застрял в этой проблеме, наконец, я ее исправил.

Решение: класс HTTPAppender должен иметь конструктор по умолчанию.

Я уверен, что эта ошибка «Не удалось создать приложение» возникла из-за отсутствия конструктора по умолчанию.

person Shobhit Walia    schedule 16.03.2017

Недавно я столкнулся с той же проблемой. Я исправил это, добавив имя сборки после полного имени типа с запятой в атрибуте type. См. Ниже.

<log4net>
    <appender name="LogFileAppender" type="TestHarness.Model.CustomRollingFileAppender, TestHarness.Model">
 </log4net>
person Rennish Joseph    schedule 22.04.2019