自定义appender在同一解决方案的其他项目中

时间:2016-06-02 07:14:48

标签: c# log4net log4net-appender

我有一个(工作)Appender,它位于同一解决方案的不同项目中。

我可以从该解决方案中的其他项目访问该Appender,但所有其他项目都无法在日志中显示错误:

  

log4net:错误无法创建[my.Backend.AzureAppender]类型的Appender [AzureAppender]。

     

报告的错误如下。 System.TypeLoadException:无法加载类型[my.Backend.AzureAppender]。试过装配[log4net,Version = 1.2.15.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a]和所有已加载的程序集

存在对my.Backend的引用。

Appender的内容如下:

<appender name="AzureAppender" type="my.Backend.AzureAppender">
  <FileName>web.log</FileName>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms [%t] %-22.22c{1} %-18.18M - %m%n" />
  </layout>
</appender>

2 个答案:

答案 0 :(得分:4)

如果您的dll尚未加载,则可能需要更改类型以包含dll的名称。

<appender name="AzureAppender" type="my.Backend.AzureAppender, mydllName">

这应该告诉log4net加载名为mydllName.dll的dll,然后在其中查找名为my.Backend.AzureAppender的类型。

如果失败,您可以尝试为该类型添加完整的AssemblyQualifiedName。

答案 1 :(得分:0)

您必须将包含my.Backend.AzureAppender的dll部署到项目的bin文件夹中。我确定它不见了。原因是您的代码中没有直接引用此dll,因此它不会复制到您的输出bin目录。