【问题标题】:Custom appender in other project of same solution同一解决方案的其他项目中的自定义附加程序
【发布时间】:2016-06-02 07:14:48
【问题描述】:

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

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

log4net:ERROR 无法创建类型为 [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>

【问题讨论】:

    标签: c# log4net log4net-appender


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我确实尝试设置 dll 绑定,以查找 dll 绑定问题(融合日志),...对齐的 web 项目和 appender 项目使用相同版本的 log4nett.dll + 添加 dll 文件名修复。谢谢!
    【解决方案2】:

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

    【讨论】:

    • 我添加了对 my.Backend 的引用(并且 .dll 也在 bin 目录中)
    猜你喜欢
    • 2010-10-10
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多