2010-01-22 52 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類應該有一個默認構造函數

我相信有關這個錯誤「無法創建追加程序」已經來到,因爲沒有默認的構造函數