【问题标题】:Log4Net.Async issue in ASP.NET MVCASP.NET MVC 中的 Log4Net.Async 问题
【发布时间】:2017-07-05 13:56:08
【问题描述】:

我不断收到以下错误:

log4net:ERROR Could not create Appender [AsyncLog4NetAppender] of type [Log4Net.Async.ParallelForwardingAppender]. Reported error follows.
System.TypeLoadException: Could not load type [Log4Net.Async.ParallelForwardingAppender]. Tried assembly [log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a] and all loaded assemblies
   at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [AsyncLog4NetAppender] not found.

包配置

<package id="log4net" version="2.0.8" targetFramework="net451" />
<package id="Log4Net.Async" version="2.0.4" targetFramework="net451" />

网络配置

  <dependentAssembly>
    <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0"/>
  </dependentAssembly>

当我删除 log4net.async nuget 包并再次添加它时,它可以工作。但过了一段时间我又遇到了这个错误。

【问题讨论】:

  • 通过在代码中引用其中的类来添加对Log4Net.Async 程序集的显式引用。这将强制构建过程加载程序集(我怀疑它没有看到对它的引用并对其进行优化)
  • 你的意思是在我的一个类中添加命名空间?
  • 我不确定这是否足够,因为编译器可能会优化它,因为它没有被使用。我似乎记得在类似的情况下,在程序集中添加一个类型的字段就可以了。
  • 同意,添加命名空间引用不会有太大作用。向我们展示您的 appender 配置。

标签: c# asp.net asp.net-mvc log4net


【解决方案1】:

您(可能)需要将程序集名称添加到您的附加程序引用中。

<appender name="AsyncLog4NetAppender" type="Log4Net.Async.ParallelForwardingAppender,Log4Net.Async">

注意逗号后面的部分,Log4Net.Async

添加引用程序集的名称应该告诉 .Net 如何在适当的程序集中找到类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2011-04-04
    相关资源
    最近更新 更多