问题描述
我扩展了AppenderSkeleton,以创建一个名为HTTPAppender的自定义附加程序,但是在xml文件中对其进行了引用. Log4Net显然无法找到我的自定义附加程序.有没有办法从xml文件中引用它以指向我的项目,还是我必须将自定义附加程序的源代码添加到log4net的源代码中,以便将其打包在log4net.dll中?
I extended AppenderSkeleton to create a custom appender called HTTPAppender, but something is up with the reference to it in the xml file. Log4Net is clearly unable to find my custom appender. Is there a way to reference it from the xml file to point to my project, or would I have to add my custom appender's source code to log4net's so it's packaged in log4net.dll?
调试时,我在即时"窗口中收到以下错误:
I get the following error in the Immediate window when debugging:
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部分:
Here's the log4net section of the xml file:
<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>
<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>
推荐答案
如果使用的是非标准程序集,请将它们与程序集一起放在应用程序目录中.如果那没有帮助,请尝试给您的程序集起一个强名称,并在log4net配置文件中使用全名.您也可以尝试将其放入GAC.
If you are using any non standard assemblies, put them in the application directory together with your assembly. If that doesn't help, try giving your assembly a strong name and using the full name in the log4net config file. you can also try putting it into GAC.
这篇关于log4net:加载自定义附加程序时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!