同一解决方案的其他项目中的自定义附加程序

Custom appender in other project of same solution

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

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

log4net:ERROR Could not create Appender [AzureAppender] of type [my.Backend.AzureAppender].

Reported error follows. System.TypeLoadException: Could not load type [my.Backend.AzureAppender]. Tried assembly [log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a] and all loaded assemblies

存在对 my.Backend 的引用。

A​​ppender内容如下:

<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>

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

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

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

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

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