2010-01-22 415 views
2

我扩展了AppenderSkeleton来创建一个名为HTTPAppender的自定义appender,但是在xml文件中引用了它。 Log4Net显然无法找到我的自定义appender。有没有办法从xml文件中引用它来指向我的项目,还是我必须将我的自定义appender的源代码添加到log4net的源代码中,以便将其打包到log4net.dll中?log4net:加载自定义appender时出错

我调试时得到即时窗口出现以下错误:

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

下面是XML文件的log4net的部分:

<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

如果您正在使用任何非标准组件,请将它们与您的组件一起放入应用程序目录中。如果这没有帮助,请尝试给组件一个强名称并在log4net配置文件中使用全名。您也可以尝试将其放入GAC。

+0

这另一个问题详细解释了一点点:https://stackoverflow.com/questions/ 20082614 /组装未加载-C-尖锐 – BrunoJCM 2017-10-20 09:00:24

2

我会假设组件无法找到。程序集的名称确实是'HTTPAppender',并且与调用程序集位于同一路径中?

1

我有同样的问题。如果您的自定义appender项目使用某个log4net.dll,并且您的项目将使用您的自定义appender使用不同的log4net.dll,它将无法找到它。

0

我也被困在这个问题最后我修好了。

解决方案是HTTPAppender类应该有一个默认构造函数

我相信有关这个错误“无法创建追加程序”已经来到,因为没有默认的构造函数