log4net: ошибка при загрузке пользовательского приложения - PullRequest
5 голосов
/ 22 января 2010

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

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

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>

Ответы [ 6 ]

7 голосов
/ 18 июля 2011
6 голосов
/ 22 января 2010

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

2 голосов
/ 22 января 2010

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

1 голос
/ 20 сентября 2014

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

0 голосов
/ 22 апреля 2019

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

<log4net>
    <appender name="LogFileAppender" type="TestHarness.Model.CustomRollingFileAppender, TestHarness.Model">
 </log4net>
0 голосов
/ 16 марта 2017

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

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

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

...