我有一个项目Common
其中包含一个 log4net CustomAppender。我在所有其他项目中引用该项目并在中配置 log4net 附加程序app.config
。一切都很顺利,除了一个项目在尝试实例化 Appender 时失败了。
输出显示以下错误:
System.TypeLoadException: Could not load type [Common.Appenders.MyCustomAppender].
Tried assembly [log4net, Version=1.2.11.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 [MyCustomAppender] not found.
所有项目的 log4net 配置都是相同的。app.config
包含:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender">
<file value="log.txt" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="MyCustomAppender" />
</root>
</log4net>
</configuration>
从我调用的代码log4net.Config.XmlConfigurator.Configure()
。如果我使用手动加载程序集Assembly.Load("Common")
在为非工作项目调用 log4net configure 之前,一切都很好。
知道为什么程序集没有加载时MyCustomAppender
是通过反射实例化的吗?我该如何解决这个问题?